Что делает оператор | = в C #? - PullRequest
3 голосов
/ 04 января 2011

Просмотр примера кода из C # 4.0 в двух словах Я наткнулся на несколько интересных операторов, связанных с перечислениями

[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; 

Где это документировано где-то еще?

ОБНОВЛЕНИЕ

Найдено сообщение на форуме , относящееся к этому

Ответы [ 3 ]

8 голосов
/ 04 января 2011

|= - побитовое или присваивание.

Это утверждение:

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

совпадает с

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

Обычно это используется в перечислениях в качестве флагов, чтобы иметь возможность хранить несколько значений в одном значении, например 32-разрядном целом числе (размер по умолчанию enum в C #).

Это похоже на оператор +=, но вместо сложения вы выполняете побитовый или.

3 голосов
/ 04 января 2011

Для справки - Операторы C # и | =

0 голосов
/ 04 января 2011

Это побитовый оператор ИЛИ, не путать с логическим или (иметь дело с bools).

В Википедии есть отличная статья на эту тему: http://en.wikipedia.org/wiki/Bitwise_operation#OR

...