Que fait '^' en c # (Enums)?
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 ...
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
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.