2008-10-24 6 views
9

Ich war einige 3rd-Party-Code zu lesen und ich fand dies:Was macht '^' in C# (Enums)?

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

Was ist das?

Ich habe '&' und '|' für bitweise 'und' und 'oder' mit enums, aber es ist das erste Mal, dass ich das Symbol sehe ...

+3

Es ist kein "Hut". Es ist eine Kartoffel. – Will

Antwort

22

^ist der bitweise XOR-Operator in C#.

BEARBEITEN: a^b gibt true zurück, wenn a wahr ist und b ist falsch oder wenn a falsch ist und b wahr ist, aber nicht beides.

+0

Meine Erinnerung an bitweise Operationen ist ein bisschen rostig ... Was würde ein XOR in dieser Situation tun? –

+0

Gibt true zurück, wenn und nur wenn genau einer der Operanden wahr ist. –

+5

Es würde das Flags.Hidden-Bit in x.Flags umschalten. (Wenn es 1 ist, ist es 0; wenn es 0 ist, ist es 1). –

2

von here wurde:

für Integral-Typen,^berechnet die bitweise Exklusiv-OR seiner Operanden. Für bool-Operanden berechnet^0 das logische Exklusiv-Oder seiner Operanden; das Ergebnis ist wahr, wenn und nur wenn eine ungerade Zahl seiner Operanden ist wahr.

15

, dass die 'xor' Betreiber wäre. In Ihrem Beispielcode würde das Flags.Hidden je nach dem aktuellen Wert von x.Flags entweder ein- oder ausgeschaltet werden.

Der Vorteil dieser Vorgehensweise besteht darin, dass Sie die Einstellung für Flags.Hidden ändern können, ohne andere Flags zu beeinflussen, die festgelegt wurden.