为什么在C#中使用something.Equals(null)时会出现空引用错误

Ada*_*dam 1 c# nullreferenceexception

当我尝试检查某些内容是否为空时,我一直收到空引用错误.我有一个名为User的类,我像这样初始化变量indvUser

User indvUser = api.Users.SearchByExternalId(session.UserInfo.UserId.ToString())
                   .Users.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

然后我想检查indvUser是否为null

if (indvUser.Equals(null))
{
    int a = 1;
}
Run Code Online (Sandbox Code Playgroud)

但是在使用时我得到一个空引用错误Equals(null),我不明白.如果它实际上是null,即没有值,不应该Equals(null)返回true?

val*_*rij 6

因为indvUsernull,并且indvUser.EqualsUser对象的实例方法(即,它需要对象的非null实例),.NET将抛出您尝试使用它的错误.

对于这样的事情,你可以使用这个:

Object.ReferenceEquals(indvUser, null)
Run Code Online (Sandbox Code Playgroud)

或者干脆:

indvUser == null
Run Code Online (Sandbox Code Playgroud)

由于这些方法都没有实际尝试访问indvUser对象本身的方法或属性,因此您应该是安全的NullReferenceExceptions