Equals(object) 的空参数¶
ID: cs/null-argument-to-equals
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- reliability
- correctness
Query suites:
- csharp-security-and-quality.qls
通常需要对照 null
检查对象,但不应使用 Equals
方法执行此操作。如果对象确实为 null
,则在尝试调用 Equals
时会引发 NullReferenceException
,从而导致意外结果。
建议¶
应将违规调用替换为 ==
或 ReferenceEquals
(区别在于可以重写 ==
,但不能重写 ReferenceEquals
)。
示例¶
在以下示例中,当 o
为 null
时,IsNull
将引发 NullReferenceException
。
class Bad
{
bool IsNull(object o) => o.Equals(null);
}
在修改后的示例中,当 o
为 null
时,IsNull
将正确返回 true
。
class Good
{
bool IsNull(object o) => o == null;
}