这是一个非常简单的问题,但我想澄清一下。
采用以下示例:
if (FirstName == "Bert" || Surname == "Berterson")
是否|| (或)运算符意味着,在这种情况下:
一个。 “如果这个人被命名为Bert和/或姓Berterson”(即“Bert Berterson”,“Bert Smith”,“Gary Berterson”都将获得资格)
- 或 -
B中。 “如果这个人有Bert或Berterson这个名字,但不是两个”(即“Bert Berterson”不符合资格,而“Sally Berterson”和“Bert Billhouse”将符合资格)
谢谢你的时间,我希望这对于这样一个简单的问题有道理和道歉
答案 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。