前言
前幾天,有個學員跟我說了一道面試題,很簡單,但是可能也會有一些人不知道,所以跟大家分析一下。
或運算中,| 和 || 有什麼區別?
分析
我們都知道,|和||這兩個運算符都可以用來表示或運算,那麼他們之間有什麼區別呢?
首先,對於值類型來說,我們只能用|來進行位運算,但是對於布爾類型來說,|和||都可以,所以這是他們的區別之一,|既能用於值類型,也可以用於布爾類型,但是||只能用於布爾類型。
其次,既然|和||都可以用於布爾類型,那麼兩者有沒有什麼區別呢?
寫了一段簡單的代碼,如下圖所示:
如果我們使用||,運行時會發現,Get1方法裏的斷點可能正常進入,而Get2方法裏的斷點不會進去,因爲對於或運算,當檢測到Get1返回值爲True之後,不管後續的結果是True還是False,結果均爲True,所以就不會進入Get2方法內部了。
如果將Get1的返回值改成False,那麼還是會進入Get2方法的。
同樣的代碼,如果將 || 改成 | ,我們會發現,無論Get1返回True或False,兩個方法裏的斷點,都會進入。
所以,總結就是||會根據前面的執行結果動態執行後面的代碼,而|不管前面的執行結果如何,都會執行後面的代碼。
同理,對於&和&&也是同樣的區別。