分享方式:


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

屬性
規則識別碼 CA2264
職稱 請勿將不可為 Null 的值傳遞至 'ArgumentNullException.ThrowIfNull'
類別 使用方式
修正程式是中斷或非中斷 不中斷
預設在 .NET 9 中啟用 作為警告

原因

當已知永遠不會是 Null 的值傳遞至 ArgumentNullException.ThrowIfNull()時,永遠不會擲回例外狀況,讓語句成為 no-op。

檔案描述

ArgumentNullException.ThrowIfNull 當傳遞的自變數為 null時,會擲回 。 某些建構,例如不可為 Null 的結構(除了 Nullable<T>)、'nameof()' 運算式和 'new' 表達式已知永遠不會是 Null,因此 ArgumentNullException.ThrowIfNull 永遠不會擲回。

在結構的情況下,由於 ArgumentNullException.ThrowIfNull 接受 object?,結構會進行 Boxed,這會導致額外的效能降低。

如何修正違規

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

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