为什么IF语句迭代所有AND条件,即使第一个是假的

Kim*_*boo -2 .net c# jit if-statement

在c#中我有一个像这样的IF条件

if(x != null && x.myprop != "value")
{
//
}
Run Code Online (Sandbox Code Playgroud)

当x为null时,为什么编译器在'&&'运算符后继续,即使条件保证不被满足.

如果我在x为空时执行x.myprop,我就会出现null异常,我知道'?' 解决问题,但我不明白为什么它继续.对不起,我的英语不好.

Owe*_*ing 5

C#中&&运算符短路,因此您无法看到此行为.

条件AND运算符(&&)执行其bool操作数的逻辑AND,但仅在必要时才计算其第二个操作数.

但是,您确定没有错误地使用&运算符(不会短路)吗?

与条件AND运算符&&相比,二元运算符不管第一个运算符的值如何都会计算运算符.