CA2264:請勿將不可為 Null 的值傳遞至 'ArgumentNullException.ThrowIfNull'

屬性
規則識別碼 CA2264
職稱 請勿將不可為 Null 的值傳遞至 ArgumentNullException.ThrowIfNull
類別 使用方式
修正是造成中斷還是不中斷 不中斷
在 .NET 10 中預設啟用 作為警告
適用語言 C# 與 Visual Basic

原因

一個已知永遠不會為空的值會傳給 ArgumentNullException.ThrowIfNull()

規則描述

ArgumentNullException.ThrowIfNull 當傳遞的自變數為 null時,會擲回 。 某些結構,例如不可為 Null 的結構(不包括 Nullable<T>)、已知為不可為 Null 的結構的類型參數、'nameof()' 表達式和 'new' 表達式,永遠不會是 Null,因此 ArgumentNullException.ThrowIfNull 永遠不會擲回。 因此,打電話 ArgumentNullException.ThrowIfNull 是不必要的。

在結構體的情況下,由於 ArgumentNullException.ThrowIfNull 接受 object?,這會導致結構體被封箱,從而增加額外的性能損耗。

如何修正違規

移除ArgumentNullException.ThrowIfNull函式呼叫。

範例

下列代碼段顯示 CA2264 的違規:

static void Print(int value)
{
    ArgumentNullException.ThrowIfNull(value);
    Console.WriteLine(value);
}

下列代碼段會修正違規:

static void Print(int value)
{
    Console.WriteLine(value.Value);
}

隱藏警告的時機

抑制此警告是安全的。

隱藏警告

如果您只想要隱藏單一違規,請將預處理器指示詞新增至原始程式檔以停用,然後重新啟用規則。

#pragma warning disable CA2264
// The code that's violating the rule is on this line.
#pragma warning restore CA2264

若要停用檔案、資料夾或專案的規則,請在組態檔中將其嚴重性設為 none

[*.{cs,vb}]
dotnet_diagnostic.CA2264.severity = none

如需詳細資訊,請參閱 如何隱藏程式代碼分析警告

另請參閱