当我尝试检查某些内容是否为空时,我一直收到空引用错误。我有一个名为User的类,我像这样初始化变量indvUser
User indvUser = api.Users.SearchByExternalId(session.UserInfo.UserId.ToString())
.Users.FirstOrDefault();
然后我想检查一下indvUser是否为null
if (indvUser.Equals(null))
{
int a = 1;
}
但是在使用我不理解的Equals(null)
时,我得到一个空引用错误。如果它实际上是null,即没有值,那么Equals(null)
不应该返回true吗?
答案 0 :(得分:6)
由于indvUser
为null
,indvUser.Equals
是User
对象上的实例方法(即,它需要对象的非null实例),. NET将抛出您尝试使用它的错误。
对于这样的事情,你可以使用它:
Object.ReferenceEquals(indvUser, null)
或者简单地说:
indvUser == null
由于这两种方法都没有真正尝试访问indvUser
对象本身的方法或属性,因此您应该安全NullReferenceExceptions
答案 1 :(得分:2)
排队:
indvUser.Equals(null)
如果indvUser
为null,那么如何调用Equals
方法呢?它可以简单地看作:
null.Equals(null)
您应将其与indvUser == null
或object.ReferenceEquals(indvUser, null)
答案 2 :(得分:1)
Object.Equals是一种非静态的方法。要调用Equals方法,您必须拥有该类的实例。
答案 3 :(得分:0)
如果indUser == null
你正在做null.Equals(null)
会引发异常。