警告 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
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈