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

Я мог видеть, что этот оператор | = используется в некотором примере кода в моем проекте. Точный код указан ниже

DocumentRetrievalOptions docRetrievalOptions = DocumentRetrievalOptions.ByTargetJurisdiction;    
    docRetrievalOptions |= DocumentRetrievalOptions.ByUniqueId;

Где 'DocumentRetrievalOptions' имеет тип enum.

Было бы очень полезно, если бы кто-нибудь дал мне знать, что на самом деле это значит.

Ответы [ 5 ]

6 голосов
/ 04 января 2012

Это Битовый / Логический ИЛИ - оператор присваивания.A |= B; совпадает с A = A | B;

Поскольку DocumentRetrievalOptions является enum, в вашем случае |= выполняет побитовую операцию.

1 голос
/ 04 января 2012

Также прочитайте это: http://msdn.microsoft.com/en-us/library/system.flagsattribute.aspx Это действительно полезно, если вы хотите использовать этот оператор таким образом.

1 голос
/ 04 января 2012

Обычно значения в перечислении используются в качестве флагов, оператор | = или «или равно» просто принимает битовое представление этих значений и делает для них побитовое ИЛИ. Таким образом, вы «включаете» другую функцию или флаг перечисления (в этом случае параметры извлечения для документа либо по целевому решению, либо по уникальному идентификатору).

1 голос
/ 04 января 2012

Это сокращение для:

docRetrievalOptions = docRetrievalOptions | DocumentRetrievalOptions.ByUniqueId;

| - оператор побитового ИЛИ. Таким образом, он работает аналогично +=, -= и другим операторам в этом стиле.

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

Применяет оператор * побитовый или * (|) к обоим операндам и сохраняет результат в docRetrievalOptions.

Это так же, как docRetrievalOptions = docRetievalOptions | DocumentRetrievalOptions.ByUniqueId;

Он интерпретирует перечисление как int, а затем выполняет операцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...