首页 > 解决方案 > 为什么 IF 语句遍历所有 AND 条件,即使第一个为假

问题描述

在 c# 中,我有这样的 IF 条件

if(x != null && x.myprop != "value")
{
//
}

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

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

标签: c#.netif-statementjit

解决方案


C# 中的&& 运算符会短路,因此您不可能看到这种行为。

条件与运算符 (&&) 对其布尔操作数执行逻辑与,但仅在必要时评估其第二个操作数。

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

与条件 AND 运算符 && 相比,二元 & 运算符计算两个运算符,而不考虑第一个值。


推荐阅读