2011-01-04 3 views
3

Parcourir l'exemple de code de C# 4.0 in a nutshell je suis tombé sur certains opérateurs intéressants impliquant énumérationsQue fait l'opérateur | = en 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; 

Où est-ce documenté ailleurs?

MISE À JOUR

trouvé un forum post relatif à cette

Répondre

8

|= est Bitwise ou cession.

Cette déclaration:

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

est le même que

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

Ceci est généralement utilisé dans les énumérations que les drapeaux pour pouvoir stocker plusieurs valeurs dans une seule valeur, comme un 32- bit entier (la taille par défaut d'un enum en C#).

Il est similaire à l'opérateur +=, mais au lieu de faire l'addition, vous faites un bit-or ou.

0

C'est un opérateur OU logique, à ne pas confondre avec logique ou (traitant des booléens).

Wikipédia a un article sur ce point: http://en.wikipedia.org/wiki/Bitwise_operation#OR

+0

Pourquoi ne pas confondre? Cela fonctionne aussi pour les bools. Ce que cela fait dépend des arguments, de toute façon dans les deux cas a | = b est égal à a = a | b. – greenoldman