我开始学习C#,在阅读逻辑运算符时,我发现:
|| operator 表示逻辑运算符,如果表达式 1 为 TRUE,则不评估表达式 2。我对这个例子很好奇:
int x = 5, y = 10;
bool result;
result = (x == 3) || (y != 5);
label12.Text = result.ToString();
如果我们已经知道X的值为5,那么结果(x==3)怎么会返回true呢??因为在这种情况下左侧运算符返回 TRUE。但是怎么办?? X =5 应该是 X ==5???我误会了什么??谁能用几句话向我解释一下??
非常感谢并提前致谢
最佳答案
短路操作意味着这里
result = (x == 3) || (y != 5);
如果 x == 3
已经为真,则 y != 5
部分将不会被评估。基本上是因为没有这个必要——我们已经知道整个表达式是真的。
但是,如果 x 为 5,则两个表达式都将被计算,因为我们仍然不知道 x == 3
之后的完整结果。
更新。也许这个例子的目的会更清楚。考虑以下当然是简化的代码:
var someObj = SomeOperation();
if (someObj != null && someObj.IsActive)
如果 SomeOperation()
返回 null 会发生什么?如果不是对这个逻辑语句进行短路求值,这段代码会抛出NullReferenceException
。但是,如果 someObj
为 null,则不会调用 IsActive
调用。
关于c# - 短路运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22638434/