c# - 短路运算符

标签 c#

我开始学习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/

相关文章:

c# - 在建立关系后隐藏零个实体

c# - 为什么即使未选中禁用编辑器中的脚本,它仍然可以工作并使对象可交互?

c# - 我可以在 Entity Framework 核心和 linq 中编写查询时的案例吗?

c# - 使用 mimekit/mailkit 库获取无法送达的电子邮件地址

c# - 如何使用C#迭代 Elasticsearch 桶

C# 加密 XML 文件

c# - 重构这个通用方法以满足 SonarQube S4018 的最佳方法是什么

c# - 有没有办法从 C# 中的多维数组中获取数组?

c# - 如何处理动态放置标签的重叠

c# - 如何为特殊日子生成 Cron 表达式?