| 属性 | 值 |
|---|---|
| 规则 ID | CA2264 |
| 标题 | 不要将不可为 null 的值传递给 ArgumentNullException.ThrowIfNull |
| 类别 | 使用情况 |
| 修复会引起中断还是不会引起中断 | 非中断 |
| 在 .NET 10 中默认启用 | 作为警告 |
| 适用的语言 | C# 和 Visual Basic |
原因
已知永远不会为 null 的值将传递给 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
有关详细信息,请参阅如何禁止显示代码分析警告。