| 屬性 | 值 |
|---|---|
| 規則識別碼 | 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
如需詳細資訊,請參閱 如何隱藏程式代碼分析警告。