Question

Je lisais du code provenant d'une tierce partie et j'ai trouvé ceci:

x.Flags = x.Flags ^ Flags.Hidden;

Qu'est-ce que ça fait?

J'ai utilisé '& amp;' et '|' pour bitwise 'et' et 'ou' avec des énumérations, mais c’est la première fois que je vois le symbole que ...

Était-ce utile?

La solution

^ est l'opérateur XOR au niveau du bit en C #.

EDIT: a ^ b renvoie vrai si a est vrai et b est faux ou si a est faux et b est vrai, mais pas les deux.

Autres conseils

Ce serait l'opérateur 'xor'. Dans votre exemple de code, l'option Flags.Hidden est activée ou désactivée, en fonction de la valeur actuelle de x.Flags.

L'avantage de le faire de cette manière est que cela vous permet de changer le paramètre de Flags.Hidden sans affecter les autres drapeaux définis.

C'est l'opérateur OU exclusif (XOR), ce lien a un exemple d'utilisation

http://weblogs.asp.net/alessandro/archive/2007/10/02/bitwise-operators-in-c-or-xor- et-amp-amp-not.aspx

Extrait de ici :

  

Pour les types intégraux, ^ calcule la   bitwise exclusif-OU de ses opérandes.   Pour les opérandes bool, ^ calcule la   logique exclusive ou de ses opérandes;   c'est-à-dire que le résultat est vrai si et   que si un nombre impair de ses opérandes est   vrai.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top