我想检查数据库中是否存在User,并且我获取了一个User对象并检查它是否为null。但是如果我们的数据库中存在用户,则问题出现在我的代码中返回以下异常,
对象引用未设置为对象的实例。
我知道当我们的数据库中没有这样的用户时会发生这个错误。所以..我想知道这个用户对象(我想要返回null)是否为null。
我的代码部分
if(newsManager.GetUserUsingEmail(User.Email).Email != null) //If user doesn't exists this come the above mentioned exception
{
//User Exists
}
else
{
//User Doesn't exists
}
如何解决?
答案 0 :(得分:3)
空引用异常可能是由于您尝试访问从Email
方法返回的用户的GetUserUsingEmail
属性。您应该先测试返回的值是否为null,然后再尝试访问它的属性。
var user = newsManager.GetUserUsingEmail(User.Email);
if (user != null)
{
// user exists
}
else
{
// user does not exist
}
答案 1 :(得分:0)
如果newsManager.GetUserUsingEmail(User.Email)
返回null
,那么您会同意尝试调用.Email
会给您Object reference not set to an instance of an object.
错误,对吗?
正如评论中所建议的那样,如果您的情况确实只是检查用户是否存在,那么只需执行此操作:
if(newsManager.GetUserUsingEmail(User.Email) != null) //If user doesn't exists this come the above mentioned exception
{
//User Exists
}
else
{
//User Doesn't exists
}
如果您的代码建议,只有当您拥有有效用户的有效if
值时,您的意图才真正进入Email
块,那么您可以这样做:< / p>
var user = newsManager.GetUserUsingEmail(User.Email);
if(user != null && !string.IsNullOrEmpty(user.Email))
{
//User Exists and has a valid email
}
else
{
//User Doesn't exists or doesn't have a valid email.
}
答案 2 :(得分:0)
您无法从null获取属性。检查对象!= null:
if(newsManager.GetUserUsingEmail(User.Email) != null) //If user doesn't exists this come the above mentioned exception
{
//User Exists
}
else
{
//User Doesn't exists
}
在C#6.0中,您可以使用安全导航操作员(?。):
if(newsManager.GetUserUsingEmail(User.Email)?.Email != null) //If user doesn't exists this come the above mentioned exception
{
//User Exists
}
else
{
//User Doesn't exists
}