CA2264:不要将不可为 null 的值传递给“ArgumentNullException.ThrowIfNull”
属性 | 值 |
---|---|
规则 ID | 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?
结构,因此将装箱该结构,这会导致额外的性能损失。
如何解决冲突
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
有关详细信息,请参阅如何禁止显示代码分析警告。