2012-03-16 16 views
5

Powiel możliwe:
What is the diffference between the | and || or operators?
What does | (pipe) mean in c#?Co to jest pojedynczy | lub?

Mam niektóre kodu, który został napisany przez innego autora w biurze, który nie jest w tej chwili. Mam trochę pracy do wykonania na jego kodzie, ale nie miałem w tym przypadku zbytniej śpiączki. Próbowałem tutaj szukać, ale to usuwa moje | poza linią wyszukiwania. Nie wiem też, jak nazywa się ten symbol, więc nie mogłem go znaleźć.

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

Moje pytanie brzmi: co oznacza singiel lub czy w tym przypadku?

+0

bitowe "lub" i bitowe "oraz" http://en.wikipedia.org/wiki/Bitwise_operation – kenny

+0

Przepraszam za zduplikowany post, o czym wspomniałem w pytaniu, które pole wyszukiwania w tej witrynie usuwa the | symbol. – Andrew

Odpowiedz

7

Bar (lub rury), | jest operatorem bitowym OR, a najprostszym sposobem wyjaśnienia jest to, że pozwala nam połączyć flagi. Rozważmy:

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

używając bitowego albo operatora, możemy połączyć flagi, wygląda następująco:

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

Możemy "test" dla danej flagi, wykorzystując:

bool isMovable = (flags & WindowFlags .Movable); 

Usuwanie flagi są nieco bardziej obciążone na gałkach ocznych:

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

Ten operator oznacza tylko OR.

Binarny | operatory są predefiniowane dla typów integralnych i bool. Dla typów integralnych , | oblicza bitowe OR swoich operandów. Dla bool operandów, | oblicza logiczne OR swoich operandów; to znaczy, wynik jest fałszywy wtedy i tylko wtedy, gdy oba argumenty są fałszywe.

referencyjny here

Zobacz wszystkie podmioty here w C#

1

| -> logiczne/bitowym OR

& -> logiczne/bitowe AND

3

Są to operacje bitowe.

Przykład

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


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

Binary | operatory są predefiniowane dla typów integralnych i bool. Dla typów integralnych, | oblicza bitowe OR swoich operandów. W przypadku operandów logicznych, | oblicza logiczne OR swoich operandów; to znaczy, wynik jest fałszywy wtedy i tylko wtedy, gdy oba argumenty są fałszywe.

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

1

Pojedyncza | jest operatorem bitowym LUB operator