2015-11-04 4 views
-1

Я недавно столкнулся с некоторым кодом, который я не совсем понимаю. Ниже приводится основное представление этого кода:Что делает оператор «| =» в C#?

bool flag = false; 
flag |= someFunction(); 

В этом примере someFunction() является функцией, которая возвращает значение bool. Мой вопрос: что делает оператор | =?

Я не нашел много информации о |= в сети или в этом сообществе. Я понимаю основные операции присваивания с использованием оператора =, операции сравнения с использованием оператора = = или других вариантов, но я никогда не видел |=, который использовался в задании раньше.

Я также знаю, что оператор | используется для побитового включения OR. Однако для меня нет смысла использовать это как часть задания. В коде sudo кажется, что в приведенном выше коде говорится: «Если результат побитового включения ИЛИ между« флагом »и someFunction() приводит к истинному значению, присвойте истинное значение флагу. В противном случае присвойте флажку значение false.» Конечно, если либо флаг, либо someFunction() хранит/возвращает истинное значение, тогда результат будет истинным (на основе того, как работает побитовое включение OR).

Является ли это правильной интерпретацией? Если это так, как работает |=, так как я знаю, что «флаг» является ложным, действительно ли имеет смысл использовать оператор |=, а не простой оператор назначения = в этом сценарии?

Заранее спасибо.

+8

похоже, что вы знаете, как '|' работать, вы должны знать, как '+ =' работать, '| =' означает 'флаг = флаг | someFunction() '.... просто так просто – Sean

+0

Да, это избыточно, если' flag' определенно 'false', но если вы используете связку в строке, то это не так. – Ryan

+0

Спасибо за ответы. Это успокаивает меня, что моя первоначальная интерпретация была правильной. Я не вижу необходимости опускать вопрос, потому что раньше этого не спрашивали в этом сообществе, и интерпретация не очевидна вначале. –

ответ

1

flag |= someFunction() равнозначно flag = flag | someFunction();
Это оператор присваивания OR.

Для получения более подробной информации см. MSDN.

1

Вы правы, что = будет иметь такой же эффект в вашем случае.

В общем случае, если существует несколько таких условий, первый может использовать |= просто для согласованности, но здесь он не имеет технического преимущества.

Смежные вопросы