今天大家好,我正在努力制作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.而且我们知道两种情况都会被检入.任何答案都有很好的解释.
c# exception-handling compiler-errors nullreferenceexception