最近發一件愁人的事“Net 6 Nullable object must have a value. ”。
通過百度搜尋都沒有找到問題的根本原因,
百度置頂的建議為
其實我們的目的很簡單 将值類型轉成引用類型 并可以指派空值。
但是程式運作的時候如果 這個值類型是Null 對 NULL.Value 會報錯 Nullable object must have a value
//性别
if (aModel.sex.HasValue)
{
if (!DictItem.XZ_Sex.Contains(aModel.sex.Value))
{
context.AddFailure(new ValidationFailure("sex", $"超出範圍"));
}
}
aModel.sex.Value 就會引發異常。
如何解決這個問題呢
第一種方法:三元表達式 aModel.sex==null?1:aModel.sex; 這種方式适合比較少的時候,如果我們大量使用了引用類型那麼修改是痛苦不堪的事情,哪如何解決批量的問題呢,有的人說了“我批量替換不就行了嗎?” 我也這麼想過但是微軟既然有這個錯誤編碼就一定會有解決方案。
是以我去了官網找找問題的答案。
再這篇文章中我找到了答案。
任意門:點選下列連接配接
C# 編譯器選項 - 語言功能規則 | Microsoft Learn
我直接貼出來吧
這中問題一般出現在 更新的時候比如net.2.x net 3.x net5.x 版本更新到net 6+ 以上的版本中。是以啊,在更新的過程中一定要主要這種問題。