假设我们具有以下昂贵的功能:
bool ExpensiveOp1() { ... }
bool ExpensiveOp2() { ... }
bool ExpensiveOp3() { ... }
另外,为简单起见,假设它们都没有副作用。
我知道如果
ExpensiveOp1
或ExpensiveOp2
在以下表达式中返回false
,C#可能会短路:return ExpensiveOp1() && ExpensiveOp2() && ExpensiveOp3();
但是,如果我以这种方式编写代码,那么编译器是否足够聪明(没有更好的用语)内联函数调用并利用短路优势?
var x = ExpensiveOp1();
var y = ExpensiveOp2();
var z = ExpensiveOp3();
return x && y && z;
最佳答案
不,这是有充分理由的。编译器不知道您的任何操作是否有副作用,因此,如果您在布尔型短路情况之外运行它们,则会在出现所需副作用的情况下运行它们。
关于c# - C#:编译器优化,函数调用和 bool 表达式短路,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51716420/