[英]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。 因此, Character
为null
,您需要单独检查这种情况:
if (Character == null || // this line is new
Character.Username == null ||
Character.Username.Length == 0)
{
//do stuff
}
因为您说过错误发生在if
语句上,所以Character
为null
。 您需要添加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.