小编Vin*_*rma的帖子

'|' vs'||' C#中的编译器优化

我最近在一次采访中被问到这个问题,我完全错了,但让我对C#和.net中的编译器优化感到好奇

请考虑以下代码段:

void Main()
{
    Console.WriteLine("Results when bitwise or is used: ");
    Console.WriteLine(FuncA() | FuncB());

    Console.WriteLine("Results when or operator is used: ");
    Console.WriteLine(FuncA() || FuncB()); 
}

bool FuncA()
{
    Console.WriteLine("Function A is executing.");
    return true;
}

bool FuncB()
{
    Console.WriteLine("Function B is executing.");
    return false;
}
Run Code Online (Sandbox Code Playgroud)

运行上面的结果会得到以下结果:

按位或使用时的结果:

功能A正在执行.

功能B正在执行.

真正

使用或运算符时的结果:

功能A正在执行.

真正

我的问题是为什么在使用按位运算符时编译器没有优化?就像C#或运算符一样,编译器已经知道了这些参数,那么为什么它不会以相同的方式处理它呢?

.net c# compiler-construction optimization bitwise-or

2
推荐指数
2
解决办法
557
查看次数