繁体   English   中英

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

[英]c# Object reference not set to an instance of an object

我正在尝试计算表中是否不存在某些内容。 我告诉它查看UserInfo包含user信息。

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

但是我在if语句上遇到错误。

你调用的对象是空的。

似乎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
}

您在注释中写道,您知道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 
} 

因为您说过错误发生在if语句上,所以Characternull 您需要添加if (Character == null)的检查。

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

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

找不到与Username等于user匹配的任何记录。 发生这种情况时,Character的值为null

您的问题是,您试图在不存在的对象上调用属性。 在调用任何Character成员之前,您需要执行检查以确保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
}

首先,您应该检查Character是否为空,然后再检查Character中是否剩余。

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

编辑:

或者只是您可以只检查角色,例如

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

您需要在Character上添加测试以了解其是否为空。 如果是这样,您将遇到所提到的异常。

因此,只需执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM