2008-10-24 12 views
9

que estaba leyendo un código de 3 ª parte y me encontré con esto:¿Qué hace '^' en C# (Enums)?

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

¿Qué hacer?

He usado '&' y '|' para bitwise 'y' y 'o' con enumeraciones, pero es la primera vez que veo ese símbolo ...

+3

No es un "sombrero". Es una papa – Will

Respuesta

22

^es el operador XOR bit a bit en C#.

EDITAR: a^b devuelve verdadero si a es verdadero y b es falso o si a es falso y b es verdadero, pero no ambos.

+0

Mi memoria de las operaciones bit a bit está un poco oxidada ... ¿qué estaría haciendo un XOR en esta situación? –

+0

Devuelve verdadero si y solo si exactamente uno de los operandos es verdadero. –

+5

Alterna el bit Flags.Hidden en x.Flags. (Si es 1, será 0, si es 0, será 1). –

2

Tomado de here:

Por tipos integrales,^calcula el operación O exclusiva de sus operandos. Para operandos bool,^calcula el exclusivo lógico o de sus operandos; es decir, el resultado es verdadero si y solo si un número impar de sus operandos es verdadero.

15

Ese sería el operador XOR '. En su código de ejemplo, alternaría Flags.Hidden activado o desactivado, según el valor actual de x.Flags.

El beneficio de hacerlo de esta manera es que le permite cambiar la configuración de Flags.Hidden sin afectar a otros indicadores que se hayan establecido.