![](/img/trans.png)
[英]LINQ DataContext.SubmitChanges() in C# Reporting “Object reference not set to an instance of an object.”
[英]'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.