检查对象是否为null

时间:2015-07-18 14:39:46

标签: c# asp.net asp.net-mvc

我想检查数据库中是否存在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
    }

如何解决?

3 个答案:

答案 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
    }