警告 CA2013:请勿将 ReferenceEquals 与值类型结合使用

从 .NET 5 开始,默认启用 .NET 代码分析器规则 CA2013。 对于使用 ReferenceEquals(Object, Object) 比较一个或多个值类型的相等性的代码,它会生成任何生成警告。

更改说明

从 .NET 5 开始,.NET SDK 包括 .NET 源代码分析器。 其中一些规则会默认启用,包括 CA2013。 如果项目包含违反此规则的代码,并已被配置为将警告视为错误,则此更改可能会中断生成。

规则 CA2013 查找使用 ReferenceEquals(Object, Object) 比较一个或多个值类型的相等性的实例。 通过此方式比较值类型的相等性可能会导致错误的结果,因为会先限定这些值,然后再将其进行比较。 即使比较的值表示值类型的同一个实例,ReferenceEquals(Object, Object) 也会返回 false

引入的版本

5.0

  • 更改代码以使用适当的相等运算符,例如 ==。 不应禁止显示此警告。

  • 若要完全禁用代码分析,请在项目文件中将 EnableNETAnalyzers 设置为 false。 有关详细信息,请参阅 EnableNETAnalyzers

受影响的 API