CA2264:請勿將不可為 Null 的值傳遞至 'ArgumentNullException.ThrowIfNull'
屬性 | 值 |
---|---|
規則識別碼 | CA2264 |
職稱 | 請勿將不可為 Null 的值傳遞至 ArgumentNullException.ThrowIfNull |
類別 | 使用方式 |
修正程式是中斷或非中斷 | 不中斷 |
預設在 .NET 9 中啟用 | 作為警告 |
原因
當已知永遠不會是 Null 的值傳遞至 ArgumentNullException.ThrowIfNull()
時,永遠不會擲回例外狀況,讓語句成為 no-op。
檔案描述
ArgumentNullException.ThrowIfNull
當傳遞的自變數為 null
時,會擲回 。 某些建構,例如不可為 Null 的結構(除了 除外 Nullable<T>),已知為不可為 Null 的結構、'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
如需詳細資訊,請參閱 如何隱藏程式代碼分析警告。