簡體   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