C#中的'或'运算符是“和/或”还是“一个或另一个”?

时间:2016-08-02 15:34:15

标签: c# if-statement operators

这是一个非常简单的问题,但我想澄清一下。

采用以下示例:

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

是否|| (或)运算符意味着,在这种情况下:

一个。 “如果这个人被命名为Bert和/或姓Berterson”(即“Bert Berterson”,“Bert Smith”,“Gary Berterson”都将获得资格)

- 或 -

B中。 “如果这个人有Bert或Berterson这个名字,但不是两个”(即“Bert Berterson”不符合资格,而“Sally Berterson”和“Bert Billhouse”将符合资格)

谢谢你的时间,我希望这对于这样一个简单的问题有道理和道歉

4 个答案:

答案 0 :(得分:6)

C#中的||运算符是包含短路。这意味着你的例子:

if (FirstName == "Bert" || Surname == "Berterson")
  • 如果FirstName"Bert",则整个表达式为true,第二部分甚至不评估

  • 如果FirstName不是"Bert",则评估第二部分并确定整个表达式的结果。

对于独占 OR(XOR),请使用^运算符:

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

如果两个条件中只有一个true,则只有true

答案 1 :(得分:2)

“或”表示逻辑或,如果至少有一个陈述为真,则为真。

要表达“xor”,您必须使用^

答案 2 :(得分:0)

这是第一个(如在大多数编程语言中) - 意思是逻辑或。您描述的另一个运算符称为 xor (异或),由C#^运算符表示。

请注意,||(和&&)是“短路的”,这意味着他们会懒惰地评估。例如,在a || b中,如果a为真,则C#根本不会检查b。这与按位或运算符|形成对比,后者总是会评估两个操作数。

答案 3 :(得分:0)

这是逻辑OR,表示如果满足第一个条件,第二个条件或两者,则结果为真。

来自文档:

  

条件OR运算符(||)执行其bool操作数的逻辑或。如果第一个操作数的计算结果为true,则不计算第二个操作数。如果第一个操作数的计算结果为false,则第二个操作符将确定整个OR表达式的计算结果为true或false。

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