我想了解AND(&&)运行时异常

Waj*_*han 0 c# exception-handling compiler-errors nullreferenceexception

今天大家好,我正在努力制作API.当我看到C#编译器的不同行为时,我感到很困惑.让我解释:

我得到例外:

If(userLoginModel.UserId>0)
{
//do something
}
else{
//do something
}
Run Code Online (Sandbox Code Playgroud)

例外:{"对象引用未设置为对象的实例."}

是的它是空的; 但如果写:

if (userLoginReturnModel != null && userLoginReturnModel.UserId >0)
{
//do something
}
else
{
//do something
}
Run Code Online (Sandbox Code Playgroud)

此代码没有抛出任何异常.

注意:我的问题是为什么编译器没有在第二个代码上抛出任何异常,因为如果存在&& condition,当编译器检查userLoginReturnModel.userId> 0时,那么这也需要抛出异常,因为object为null.而且我们知道两种情况都会被检入.任何答案都有很好的解释.

Pio*_*jsa 7

的情况下:

if (userLoginReturnModel != null && userLoginReturnModel.UserId >0)
Run Code Online (Sandbox Code Playgroud)

如果第一个条件为假,则不检查next(因为没有必要这样做 - false &&任何给出false).

熟悉|| - 如果first为true则不检查next(不需要 - true || any give true).

  • 也许作为附录:当只用一个"&"来表示bool的混淆时,就会发生预期.检查:/sf/ask/387632521/ (3认同)