天天看點

Net X Nullable object must have a value.

最近發一件愁人的事“Net 6 Nullable object must have a value. ”。

通過百度搜尋都沒有找到問題的根本原因,

百度置頂的建議為

Net X 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 X Nullable object must have a value.

 這中問題一般出現在 更新的時候比如net.2.x net 3.x  net5.x 版本更新到net 6+ 以上的版本中。是以啊,在更新的過程中一定要主要這種問題。