2016-08-02 156 views
2

這是一個非常簡單的問題,但我想澄清一點。C#中的'或'運算符是指「和/或」還是「一個或另一個」?

看看下面的例子:

if (FirstName == "Bert" || Surname == "Berterson") 

是否|| (或)運營商的意思是,在這種情況下:

答:「如果該人被命名爲Bert和/或具有Berterson姓氏」(即「Bert Berterson」,「Bert Smith」,「Gary Berterson」均符合資格)

- 或 -

B.「如果人有兩種名字伯特還是姓Berterson但不能同時」(即「伯特Berterson」就沒有資格當「薩利Berterson」和「伯特·比爾豪斯「將合格)

謝謝你的時間,我希望這是有道理的,併爲這樣一個簡單的問題道歉

回答

6

||運營商在C#是包容或者說是短路。這意味着您的例如:

if (FirstName == "Bert" || Surname == "Berterson") 
  • 如果FirstName"Bert",整個表達式是true和第二部分是甚至不評估

  • 如果FirstName不是"Bert"第二部分是評估和確定整個表達式的結果。

對於獨家或(XOR)使用^操作:

if ((FirstName == "Bert")^(Surname == "Berterson")) 

這隻會是true如果恰好的兩個條件之一true

+0

在布爾值的情況下,XOR運算符也相當於'=':即'甲^ B'相當於'A = B'如果'A'和'乙! '是布爾人。當然,這幾乎總是不太可讀,這通常會使'^'成爲更好的選擇。 – Kyle

2

「或」表示邏輯或,如果至少有一個語句爲真,則爲真。

爲了表達「異」,你將不得不使用^

0

這是第一個(如在大多數編程語言中) - 意思是邏輯或。您描述的另一個運算符稱爲xor(不包括或),它由C#^運算符表示。

請注意||(和&&)是「短路」,這意味着他們懶惰地評估。例如,在a || b中,如果a爲真,則C#根本不檢查b。這與位操作符或運算符|形成對比,後者將始終評估兩個操作數。

0

這是一個邏輯「或」,它表示如果滿足第一個條件,第二個條件或兩者都滿足,則結果爲真。

從文檔:

的條件或運算符(||)執行它的操作數布爾的邏輯或。如果第一個操作數的計算結果爲真,則不計算第二個操作數。如果第一個操作數的計算結果爲false,則第二個運算符將確定OR表達式是否爲真或假。

https://msdn.microsoft.com/en-us/library/6373h346.aspx

相關問題