2011-01-04 14 views
3

Durchsuchen des Codebeispiel von C# 4.0 in a nutshell ich auf einige interessante Betreiber kam Beteiligung AufzählungenWas macht der Operator | = in C#?

[Flags] 
public enum BorderSides { Left=1, Right=2, Top=4, Bottom=8 } 

... 
BorderSides leftRight = BorderSides.Left | BorderSides.Right; 
... 

BorderSides s = BorderSides.Left; 
s |= BorderSides.Right; 
... 

s ^= BorderSides.Right; 

Wo dies woanders dokumentiert ist?

UPDATE

ein forum post fanden diese

Antwort

8

|= ist eine bitweise oder Zuweisung.

Diese Aussage:

BorderSides s = BorderSides.Left; 
s |= BorderSides.Right; 

ist die gleiche wie

BorderSides s = BorderSides.Left; 
s = s | BorderSides.Right; 

Diese typischerweise in Aufzählungen verwendet wird als Flags mehrere Werte in einem einzigen Wert, wie ein 32- speichern zu können, Bit Integer (die Standardgröße eines enum in C#).

Es ist ähnlich wie der += Operator, aber anstatt zu tun, tun Sie ein bitweises oder.

0

Es ist ein bitweiser OR-Operator, nicht mit logischen oder (Umgang mit Bools) zu verwechseln.

Wikipedia hat einen großen Artikel zu diesem Thema: http://en.wikipedia.org/wiki/Bitwise_operation#OR

+0

Warum nicht verwirrt? Es funktioniert auch für Bools. Was es tut, hängt von Argumenten ab, in beiden Fällen ist a | = b gleichwertig von a = a | b. – greenoldman