我想了解 AND (&&) 运行 时间异常
I want to understand AND (&&) run time exception
大家好,今天我的工作是 API.I 当我看到 C# 编译器的不同行为时感到困惑。让我解释一下:
我遇到异常:
If(userLoginModel.UserId>0)
{
//do something
}
else{
//do something
}
异常:{"Object reference not set to an instance of an object."}
是的,它是空的;
但是如果写 :
if (userLoginReturnModel != null && userLoginReturnModel.UserId >0)
{
//do something
}
else
{
//do something
}
这段代码没有抛出任何异常。
注意:我的问题是为什么编译器没有在第二个代码上抛出任何异常,因为 if 中有 && 条件,当编译器检查 userLoginReturnModel.userId > 0 时,这也需要抛出异常,因为对象为空。正如我们所知,这两个条件都将被检查。任何有很好解释的答案。
如果是:
if (userLoginReturnModel != null && userLoginReturnModel.UserId >0)
如果第一个条件为假,则不检查下一个条件(因为没有必要这样做 - false && 任何东西都会给出 false)。
类似于|| - 如果第一个为真,则不检查下一个(不需要 - 真 || 任何东西都为真)。
在这种情况下,如果 userLoginReturnModel 为空,您将拥有:
if ( false && ...
false 后需要检查条件吗?假 && 真仍然是假的。所以其余条件无关紧要,不会被检查。
大家好,今天我的工作是 API.I 当我看到 C# 编译器的不同行为时感到困惑。让我解释一下:
我遇到异常:
If(userLoginModel.UserId>0)
{
//do something
}
else{
//do something
}
异常:{"Object reference not set to an instance of an object."}
是的,它是空的; 但是如果写 :
if (userLoginReturnModel != null && userLoginReturnModel.UserId >0)
{
//do something
}
else
{
//do something
}
这段代码没有抛出任何异常。
注意:我的问题是为什么编译器没有在第二个代码上抛出任何异常,因为 if 中有 && 条件,当编译器检查 userLoginReturnModel.userId > 0 时,这也需要抛出异常,因为对象为空。正如我们所知,这两个条件都将被检查。任何有很好解释的答案。
如果是:
if (userLoginReturnModel != null && userLoginReturnModel.UserId >0)
如果第一个条件为假,则不检查下一个条件(因为没有必要这样做 - false && 任何东西都会给出 false)。
类似于|| - 如果第一个为真,则不检查下一个(不需要 - 真 || 任何东西都为真)。
在这种情况下,如果 userLoginReturnModel 为空,您将拥有:
if ( false && ...
false 后需要检查条件吗?假 && 真仍然是假的。所以其余条件无关紧要,不会被检查。