2008-10-24 6 views
9

Je lisais un code 3 du parti et j'ai trouvé ceci:Que fait '^' dans C# (Enums)?

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

Que faut-il faire?

J'ai utilisé '&' et '|' pour 'bit' et 'ou' avec enums, mais c'est la première fois que je vois le symbole ...

+3

Ce n'est pas un "chapeau". C'est une pomme de terre. – Will

Répondre

22

^est l'opérateur XOR bit à 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.

+0

Ma mémoire des opérations au niveau du bit est un peu rouillée ... que ferait un XOR dans cette situation? –

+0

Renvoie true si et seulement si l'un des opérandes est vrai. –

+5

Il bascule le bit Flags.Hidden dans x.Flags. (Si c'est 1, ce sera 0, si c'est 0, ce sera 1). –

2

Taken de here:

Pour les types intégraux,^calcule les-OU exclusif de ses opérandes au niveau du bit. Pour les opérandes booléens,^calcule l'exclusif logique ou de ses opérandes; c'est-à-dire que le résultat est vrai si et seulement si un nombre impair de ses opérandes est vrai.

15

Ce serait l'opérateur 'XOR'. Dans votre exemple de code, il activera ou désactivera Flags.Hidden, en fonction de la valeur actuelle de x.Flags. L'avantage de le faire de cette façon est qu'il vous permet de modifier le paramètre pour Flags.Hidden sans affecter les autres indicateurs qui ont été définis.