簡體   English   中英

'你調用的對象是空的。' 在C#linq to SQL中

[英]'Object reference not set to an instance of an object.' in C# linq to SQL

這是顯示錯誤的代碼行

var physician = (from userAccounts in myDb.Physicians
                            where userAccounts.Phy_UserName == txtUserName.Text
                            select userAccounts).FirstOrDefault();

            setFirstName(physician.Phy_FName);

但是在我的二傳手中,我有一個前提條件,如果它是一個空值,它將什么都不會做,但是它怎么會繼續出現該錯誤呢? 這是我的設置員代碼

public void setFirstName(string fName) {
            if (fName == null)
            {
            }
            else {
                firstName = fName;
            }
        }

我猜您的醫師查詢返回null

然后,您嘗試使用null值調用屬性Phy_FName

在這種情況下,在setFirstName方法中檢查null值將不會保護您,因為Phy_FName不是null ,而是physician

順便說一句,你可能還需要檢查fName是不是在你的空字符串setFirstName方法。 您可以使用if (!String.IsNullOrEmpty(fName))來檢查這兩種情況

嘗試這個:

var physician = (from userAccounts in myDb.Physicians
                            where userAccounts.Phy_UserName == txtUserName.Text
                            select userAccounts).FirstOrDefault();

if(physician != null)
{
  setFirstName(physician.Phy_FName);
}
else
{
  //Throw Error or any any other processing as needed.
}

我敢打賭physician是空的。 您確定從查詢中得到任何回報嗎?

Phy_FName屬性將以任何一種方式進行評估,因此在嘗試讀取其屬性之前,請確保physician不為空。

在使用前,您需要檢查physician的價值:

if (physician != null)
    setFirstName(physician.Phy_FName);

為了澄清我自己的錯誤假設,也許您也在考慮:

如果存在,則FirstOrDefault將返回默認值,但是對象的默認值為null 因此,您的Linq查詢很可能返回醫師的空值。 然后,您嘗試其中的一個訪問Phy_FName。

這是一個SO問題,可以更深入地闡明這一點: 為引用類型指定默認值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM