В строках ниже:
//Folder.Attributes = FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System | FileAttributes.ReadOnly;
Folder.Attributes |= FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System | FileAttributes.ReadOnly;
Folder.Attributes |= ~FileAttributes.System;
Folder.Attributes &= ~FileAttributes.System;
Что означает |=
(один канал равен) и &=
(один амперсанд равен) означает в C #
Я хочу удалить системный атрибут, сохранив остальные ...
c#
operators
bitwise-operators
SilverLight
источник
источник
x = x | (y);
это лучший способ описать это, потому чтоx |= y + z;
это не то же самое, чтоx = x | y + z;
Folder.Attributes &= ~FileAttributes.System;
|
является побитовое или&
это побитовое иa |= b
эквивалентно заa = a | b
исключением того, чтоa
оценивается только один разa &= b
, эквивалентно заa = a & b
исключением того, чтоa
оценивается только один разЧтобы удалить системный бит без изменения других битов, используйте
~
побитовое отрицание. Таким образом, вы установите все биты в 1, кроме системного бита.and
-использование маски установит System в 0 и оставит все остальные биты нетронутыми, потому что0 & x = 0
и1 & x = x
для любогоx
источник
a
оценивается только один раз? Почему это будет оцениваться больше раз?a |= b
значитa = a || b
?Сделать это можно так:
источник
^= bit
установит бит, если он еще не был установлен,&= ~bit
не устанавливает его.