2012-03-16 14 views
5

Duplicar posible:
What is the diffference between the | and || or operators?
What does | (pipe) mean in c#?¿Qué significa una sola | o & mean?

Tengo algo de código que fue escrito por otro desarrollador en la oficina, que no es en el momento actual. Tengo algo que hacer en su código, pero no he estado en coma antes. Intenté buscar aquí, pero me despoja | fuera de la línea de búsqueda. Tampoco sé cuál es el nombre de ese símbolo, así que no pude buscarlo así.

this.Action.Values[key] = (int)this.Action.Values[key] | 1; 

Mi pregunta es lo que hace la única o hacer en este caso?

+0

bitwise 'o' y bitwise 'y' http://en.wikipedia.org/wiki/Bitwise_operation – kenny

+0

Disculpas por la publicación duplicada, como mencioné en la pregunta, el cuadro de búsqueda en este sitio se quita el | símbolo. – Andrew

Respuesta

7

El Bar (o tubo), | es un operador de bits OR, y la manera más fácil de explicar es que nos permite combinar las banderas. Considere:

[Flags] 
public enum WindowFlags 
{ 
    None = 0, 
    Movable = 1, 
    HasCloseBox = 2, 
    HasMinimizeBox = 4, 
    HasMaximizeBox = 8 
} 

Utilizando el bit a bit-OR, podemos combinar las banderas, de esta manera:

WindowFlags flags = WindowFlags .Movable | WindowFlags .HasCloseBox | WindowFlags .HasMinimizeBox; 

Podemos "prueba" para un indicador dado, usando:

bool isMovable = (flags & WindowFlags .Movable); 

Extracción banderas es un poco más de una tensión en los ojos:

flags &= ~WindowFlags.HasCloseBox; // remove HasCloseBox flag 
1

Este operador significa solo OR.

Binario | los operadores están predefinidos para los tipos integrales y bool. Para tipos integrales , | calcula el OR bit a bit de sus operandos. Para bool operandos, | calcula el OR lógico de sus operandos; es decir, el resultado es falso si y solo si sus dos operandos son falsos.

Referencia here

Ver todos los operadores here en C#

1

| -> lógica/OR bit a bit

& -> lógica/AND bit a bit

3

Estas son operaciones bit a bit.

Ejemplo

011000101 
| 100100100 
----------- 
= 111100101 


    011000101 
& 100100100 
----------- 
= 000000100 
1

binario | los operadores están predefinidos para los tipos integrales y bool. Para tipos integrales, | calcula el OR bit a bit de sus operandos. Para operandos bool, | calcula el OR lógico de sus operandos; es decir, el resultado es falso si y solo si sus dos operandos son falsos.

http://msdn.microsoft.com/en-us/library/kxszd0kx(v=vs.100).aspx

1

Una sola | es operador O bit

Cuestiones relacionadas