W poniższych wierszach:
//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;
Co oznacza |=
(pojedyncza rura równa) i &=
(pojedynczy znak ampersand równa) w języku C #
Chcę usunąć atrybut systemowy, zachowując pozostałe ...
c#
operators
bitwise-operators
SilverLight
źródło
źródło
x = x | (y);
jest lepszym sposobem opisania tego, ponieważx |= y + z;
nie jest tym samym, cox = x | y + z;
Folder.Attributes &= ~FileAttributes.System;
|
jest bitowy lub&
jest bitowy ia |= b
jest równoważne za = a | b
wyjątkiem tego, żea
jest oceniane tylko raz,a &= b
jest równoważne za = a & b
wyjątkiem tego, żea
jest oceniane tylko razAby usunąć bit systemowy bez zmiany innych bitów, użyj
~
jest negacją bitową. W ten sposób ustawisz wszystkie bity na 1 oprócz bitu systemowego.and
- użycie maski ustawi System na 0 i pozostawi wszystkie inne bity nietknięte, ponieważ0 & x = 0
i1 & x = x
dla każdegox
źródło
a
jest oceniany tylko raz? Dlaczego miałoby być oceniane więcej razy niż to?a |= b
faktycznie oznaczaa = a || b
?Możesz to zrobić w następujący sposób:
źródło
^= bit
ustawi bit, jeśli nie był jeszcze ustawiony,&= ~bit
nie ustawia go.