qu’est-ce que | = (tuyau unique égal) et & = (esperluette unique égale) signifient

Dans les lignes ci-dessous:

//Folder.Atsortingbutes = FileAtsortingbutes.Directory | FileAtsortingbutes.Hidden | FileAtsortingbutes.System | FileAtsortingbutes.ReadOnly; Folder.Atsortingbutes |= FileAtsortingbutes.Directory | FileAtsortingbutes.Hidden | FileAtsortingbutes.System | FileAtsortingbutes.ReadOnly; Folder.Atsortingbutes |= ~FileAtsortingbutes.System; Folder.Atsortingbutes &= ~FileAtsortingbutes.System; 

Que signifie |= (tuyau unique égal) et &= (esperluète unique égale) en C #
Je veux supprimer l’atsortingbut système en gardant les autres …

Ils sont des opérateurs d’ affectation de composés , traduisant (de manière très souple)

 x |= y; 

dans

 x = x | y; 

et pareil pour & . Il y a un peu plus de détails dans quelques cas concernant une dissortingbution implicite, et la variable cible n’est évaluée qu’une seule fois, mais c’est essentiellement l’essentiel.

En termes d’opérateurs non composés, & est un bit “AND” et | est un “OU” binary .

EDIT: Dans ce cas, vous voulez Folder.Atsortingbutes &= ~FileAtsortingbutes.System . Pour comprendre pourquoi:

  • ~FileAtsortingbutes.System signifie “tous les atsortingbuts sauf System ” ( ~ est un bit-NOT-NOT)
  • & signifie “le résultat est tous les atsortingbuts qui apparaissent des deux côtés de l’opérande”

Donc, il agit essentiellement comme un masque – ne conserve que les atsortingbuts qui apparaissent dans (“tout sauf le système”). En général:

  • |= appenda seulement des bits à la cible
  • &= ne supprimera jamais que des bits de la cible
  • | est bitwise ou
  • & est binary et

a |= b est équivalent à a = a | b a = a | b sauf que est évalué une seule fois
a &= b est équivalent à a = a & b sauf qu’une est évaluée une seule fois

Pour supprimer le bit système sans changer les autres bits, utilisez

 Folder.Atsortingbutes &= ~FileAtsortingbutes.System; 

~ est la négation binary. Vous allez donc mettre tous les bits à 1 sauf le bit Système. and -ing avec le masque mettra System à 0 et laissera tous les autres bits intacts car 0 & x = 0 et 1 & x = x pour tout x

Je veux supprimer l’atsortingbut système en gardant les autres ..

Vous pouvez le faire comme ça:

 Folder.Atsortingbutes ^= FileAtsortingbutes.System;