使用 VS 2022,.Net 6.0,我認為這是正確的:
public static void test(List<String> list = null)
{ }
但編譯器警告我:
CS8625 Cannot convert null literal to non-nullable reference type
List<T> 根據定義應該可以為空,對吧?
uj5u.com熱心網友回復:
最近,微軟在新專案中默認啟用了可為空的參考型別。
您有五種方法可以消除此警告:
- 您可以尊重可為空的參考型別,并更改引數的型別:
public static void test(List<String>? list = null) { }
- 您可以使用
!運算子忽略空賦值。(我喜歡將此稱為“我知道得更好”運算子,因為我通常會在我知道我分配的內容不為空但編譯器認為它可能為空時使用它。)
public static void test(List<String> list = null!) { }
- 您可以僅對這段代碼禁用可為空的參考型別:
#nullable disable
public static void test(List<String> list = null) { }
#nullable restore
- 您可以通過將其放在檔案
#nullable disable的開頭來禁用整個檔案的可為空的參考型別(使用您的命名空間宣告) - 您可以為專案禁用可為空的參考型別。在解決方案資源管理器中右鍵單擊專案 -> 屬性 -> 構建 -> 常規 -> 可空。
uj5u.com熱心網友回復:
進入您的專案檔案并洗掉顯示的行 <Nullable>Enable</Nullable>

uj5u.com熱心網友回復:
一旦可空參考型別的啟用,List<T>是不能為空默認情況下。
您必須通過附加一個?字符將其顯式標記為可為空。
public static void test(List<String>? list = null)
{ }
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408703.html
標籤:
下一篇:在.net中的可等待函式中等待
