Dans les lignes ci-dessous:
//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;
Que signifient |=
(single pipe égal) et &=
(single esperluette égal) en C #
je veux supprimer l'attribut système en gardant les autres ...
la source
x = x | (y);
est une meilleure façon de le décrire car cex |= y + z;
n'est pas la même chose quex = x | y + z;
Folder.Attributes &= ~FileAttributes.System;
|
est au niveau du bit ou&
est au niveau du bit eta |= b
équivaut àa = a | b
sauf quea
n'est évalué qu'une seule foisa &= b
équivaut àa = a & b
sauf quea
n'est évalué qu'une seule foisAfin de supprimer le bit système sans changer les autres bits, utilisez
~
est une négation au niveau du bit. Vous mettrez ainsi tous les bits à 1 sauf le bit Système.and
-l'utiliser avec le masque mettra System à 0 et laissera tous les autres bits intacts car0 & x = 0
et1 & x = x
pour toutx
la source
a
n'est évalué qu'une seule fois? Pourquoi serait-il évalué plus de fois que cela?a |= b
veut direa = a || b
?Vous pouvez faire ceci comme ceci:
la source
^= bit
définira le bit s'il n'était pas déjà défini,&= ~bit
ne le définira pas.