下面的代碼是提高空值異常如何刪除空值例外,在下面的語句
Record rec = (Record)obj.Records.Where(x => x.Id == no).SingleOrDefault();
下面的代碼是提高空值異常如何刪除空值例外,在下面的語句
Record rec = (Record)obj.Records.Where(x => x.Id == no).SingleOrDefault();
好,無論是obj.Records
是null
或沒有找到任何記錄。但這也不能實際工作... x.Id == no
...除非當然no
是一個變量的地方。
行改成這樣:
Record rec = obj.Records.Where(x => x.Id == no).SingleOrDefault() as Record;
看到,default
的類型將是null
。此外,它的真的不可能,雖然我不完全知道你的代碼,即前述的線不能是簡單的:
Record rec = obj.Records.Where(x => x.Id == no).SingleOrDefault();
是不是Records
的Record
類型的列表?
爲什麼不能'x.ID == no'工作? – Chris
@Chris _If_「Records」枚舉中有一個「null」條目。 –
@Chris,以及如果'no'是一個變量,我想可以。 :D –
有三個潛在的地方,一個NullReferenceException
可能發生(編輯:我們現在知道Id
是int
):
obj.Records
如果obj
是null
Records.Where(...)
如果Records
是null
x.Id
在你的lambda中如果你有一個null
條目可以枚舉(即x
在該上下文中是null
)。下面是它不會(假設它編譯):
SingleOrDefault
如果多個條目將只拋出一個異常。如果沒有,則返回null
作爲參考類型,或者返回值類型的默認值。(Record)
鑄造。由於沒有編譯器錯誤,我假設Record
是一個類。如果有值,只有當它是一個無效的轉換(而不是空例外)時纔會引發異常。 A (Record)null
對於參考類型是完全有效的。你應該調試和步找出它導致了異常。
REC對象顯示空例外。 對象引用未設置爲對象的實例 –
@AshishBabu你的意思是(你提供的代碼)行嗎?如果你的意思是'rec'是'null',那麼右手邊拋出一個異常是很正常的。引用類型將具有默認值「null」。如果您正在調試並且在該行引發異常,請檢查「obj」,「obj.Records」和「obj.Records」中的項目,作爲罪魁禍首。如果這個異常的原因是'rec',但是在這行之後,你只需要一個額外的邏輯來處理'rec'變量的'null'值。這很難說。你只向我們展示一行。 –
要刪除空值異常發現是空值,並確保它是不是你運行的語句之前...同類很難知道你在問什麼,因爲我們不能告訴你的價值觀是空的... – Chris
它實際上是記錄rec變得空,但我不知道它,beacuase一切都是正確的。 –
對於這個問題陳述和代碼,不應該三個upvotes downvotes沒有任何意圖理解問題或顯示什麼試圖解決它? – CodeCaster