[英]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.