c# - `` 吗? ?`` 运营商使用短路?

标签 c# logic operator-keyword

C# 中的 ?? 运算符在计算时是否使用短路?

var result = myObject ?? ExpressionWithSideEffects();

myObject为非空时,ExpressionWithSideEffects()的结果不会被使用,但是ExpressionWithSideEffects()会被完全跳过吗?

最佳答案

是的,它会短路。

这是在 LinqPad 中测试的片段:

string bar = "lol";
string foo = bar ?? string.Format("{2}", 1);
foo.Dump();
bar = null;
foo = bar ?? string.Format("{2}", 1);
foo.Dump();

第一个合并没有抛出异常,而第二个确实抛出异常(格式字符串无效)。

关于c# - `` 吗? ?`` 运营商使用短路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3103557/

相关文章:

c# - 以编程方式篡改 http 请求

c# - 在没有 Razor View 引擎的情况下在南锡进行本地化

c# - 构建许多 C# 项目时 Visual Studio Build Avoidance

r - 如何编写 R 脚本来检查直线;即,对于任何给定的行,一组列中的所有值是否都具有相同的值

SQL CASE 语句 - 缺少运算符错误

c# - StackOverflow 在设计比较运算符时

c# - 如何在 mac 上的 visual studio 代码中执行 C# 代码

programming-languages - 什么是逻辑编程?和其他的有什么不同

logic - Step7 - 如何调用循环中断

c++ - 为什么在条件运算符 (?:), 第二和第三个操作数必须具有相同的类型?