c#对象引用未设置为对象的实例

时间:2012-01-18 09:39:50

标签: c# asp.net-mvc-3 if-statement

如果表格中不存在某些内容,我正在努力解决问题。我告诉它要查看UserInfo是否包含user的信息。

UserInfo Character = db.UserInfoes.SingleOrDefault(a => a.Username == user);
if (Character.Username == null || Character.Username.Length == 0)
{
    //do stuff
}

但我在if声明中收到错误。

  

对象引用未设置为对象的实例。

6 个答案:

答案 0 :(得分:6)

似乎db.UserInfoes.SingleOrDefault(a => a.Username == user)表达式返回null,因为它找不到满足过滤条件的任何匹配记录。

这样:

UserInfo Character = db.UserInfoes.SingleOrDefault(a => a.Username == user);
if (Character == null || Character.Username == null || Character.Username.Length == 0)
{
    //do stuff
}

答案 1 :(得分:2)

您在评论中写道,您知道db.UserInfoes.SingleOrDefault(a => a.Username == user)返回null。因此,Characternull,您需要单独检查此案例:

if (Character == null ||                 // this line is new
    Character.Username == null || 
    Character.Username.Length == 0) 
{ 
    //do stuff 
} 

答案 2 :(得分:1)

由于您在if语句中说错误,Characternull。您需要为if (Character == null)添加支票。

答案 3 :(得分:1)

如果您在if语句中收到错误,则可能是您的搜索: -

UserInfo Character = db.UserInfoes.SingleOrDefault(a => a.Username == user);

未找到任何匹配用户名等于用户的记录。发生这种情况时,Character的值为null

您的问题是您尝试在不存在的内容上调用属性。在调用任何成员之前,您需要执行检查以确保Character不是null

if ( Character != null ) 
{
   // Can now safely call properties on the Character object
}
else
{
   // Take the appropriate action for circumstances where we can't
   // find a user by username
}

答案 4 :(得分:1)

首先你要检查Character是否为null,然后你应该检查是否留在Character中。

if(Character != null)
{
   if(Character.Username == null || Character.Username.Lenght == 0)
   {
       //Do Stuff
   }
}

编辑:

或者只是你可以只查看角色,比如

if(Character == null)
{
//Do Stuff
}

答案 5 :(得分:0)

您需要在Character上添加一个测试,以确定它是否为null。如果是这种情况,您将获得您提及的例外情况。

所以就这样做:

if(Character != null)
{
    //Your code can now safely call the Properties/Methods/etcetc...
}