2015-11-04 82 views
-1

我最近遇到了一些我不完全瞭解的代碼。下面是此代碼的基本表示:「| =」運算符在C#中做什麼?

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

在這個例子中,someFunction()是返回bool值的函數。我的問題是,| =運算符是做什麼的?

我還沒有發現有關在網絡上還是在這個社區|=多的信息。我瞭解使用=運算符的基本賦值操作,使用= =運算符或其他變體的比較運算,但我從未在之前的賦值中使用過|=

我也知道|運算符用於按位包含OR的比較。但是,將它用作任務的一部分對我來說沒有任何意義。在sudo代碼中,上面的代碼似乎是這樣說的:「如果」標誌「和someFunction()之間的按位包含或結果爲真值,則將true值賦給flag,否則將false賦值爲flag。」當然,如果標誌或someFunction()存儲/返回一個真值,那麼結果將是真實的(基於按位包含OR如何工作)。

這是一個正確的解釋?如果那是多麼|=的作品,因爲我知道,「標誌」是假的,它真的任何意義,用|=運營商在這種情況下不是一個簡單的=賦值運算符?

在此先感謝。

+8

看起來你知道如何'|'的工作,你必須知道如何'+ ='工作,'| =''指國旗=標誌| someFunction()'....就這麼簡單 – Sean

+0

是的,如果'flag'絕對是'false',這是多餘的,但如果你連續使用一堆,那麼它不是。 – Ryan

+0

感謝您的回覆。這讓我放心,我最初的解釋是正確的。我不認爲有必要減少這個問題,因爲之前沒有在這個社區問過這個問題,而且最初的解釋並不明顯。 –

回答

1

flag |= someFunction()相當於flag = flag | someFunction();
這是OR賦值運算符。

請參閱MSDN瞭解更多詳情。

1

你是正確=會對你的情況相同的效果。

在一般情況下,如果有幾個這樣的條件下,第一個可以使用|=簡單的一致性,但這裏沒有技術優勢。