C#:编译器优化、函数调用和 bool 表达式短路

标签 c# optimization short-circuiting boolean-operations

假设我们有以下昂贵的函数:

bool ExpensiveOp1() { ... }
bool ExpensiveOp2() { ... }
bool ExpensiveOp3() { ... }

此外,为了简单起见,假设它们都没有副作用。

我知道,如果以下表达式中的 ExppressiveOp1ExppressiveOp2 返回 false,C# 可能会短路:

return ExpensiveOp1() && ExpensiveOp2() && ExpensiveOp3();

但是,如果我以这种方式编写代码,编译器是否足够聪明(由于缺乏更好的术语)内联函数调用并利用短路?

var x = ExpensiveOp1();
var y = ExpensiveOp2();
var z = ExpensiveOp3();
return x && y && z;

最佳答案

不,这是有充分理由的。编译器不知道您的任何操作是否有副作用,因此,如果您在 bool 短路情况之外运行它们,它会运行它们,以防出现您想要的副作用。

关于C#:编译器优化、函数调用和 bool 表达式短路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51716420/

相关文章:

c# - 设备独立位图字节数组到图像 : Parameter is not valid

c - 查找数字是否在范围内的最快方法

optimization - 查找使矩阵中的行唯一的列的最小子集

opengl - OpenGL 纹理的纵横比会影响性能吗?

mysql - Mysql语句中的逻辑表达式没有给出期望的结果

javascript - 编写 if 语句的新方法

c# - 将 XML 转换为列表

c# - 显示 MySql 服务器的数据库

c# - WCF Restful Web 服务客户端限制

c++ - 连词模板不会短路