In den folgenden Zeilen:
//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;
Was bedeutet |=
(Single Pipe Equal) und &=
(Single Ampersand Equal) in C # ?
Ich möchte Systemattribute entfernen, indem ich die anderen behalte ...
quelle
x = x | (y);
ist eine bessere Art, es zu beschreiben, weilx |= y + z;
es nicht dasselbe ist wiex = x | y + z;
Folder.Attributes &= ~FileAttributes.System;
|
ist bitweise oder&
ist bitweise unda |= b
ist äquivalent zua = a | b
außer dassa
nur einmal ausgewerteta &= b
wird äquivalent zua = a & b
außer dassa
nur einmal ausgewertet wirdVerwenden Sie, um das Systembit zu entfernen, ohne andere Bits zu ändern
~
ist bitweise Negation. Sie setzen also alle Bits mit Ausnahme des Systembits auf 1.and
Wenn Sie die Maske verwenden, wird das System auf 0 gesetzt und alle anderen Bits bleiben erhalten, da0 & x = 0
und1 & x = x
für allex
quelle
a
nur einmal ausgewertet wird? Warum sollte es öfter ausgewertet werden?a |= b
eigentlich eigentlicha = a || b
?Sie können dies folgendermaßen tun:
quelle
^= bit
setzt das Bit, wenn es nicht bereits gesetzt wurde,&= ~bit
setzt es nicht.