规则 ID |
DA0006 |
类别 |
.NET Framework 使用 |
分析方法 |
采样 |
消息 |
对值类型的 Equals 和等号运算符进行重写。 |
消息类型 |
警告 |
原因
对 Equals 方法或公共值类型的相等运算符的调用在分析数据中占很大比例。 请考虑实施更有效的方法。
规则说明
对于值类型,Equals 的继承的实现使用 System.Reflection 库,并比较类型中所有字段的内容。 反射需要消耗大量计算资源,可能没有必要比较每一个字段是否相等。 如果希望用户对实例进行比较或排序,或者希望用户将实例用作哈希表键,则值类型应实现 Equals。 如果编程语言支持运算符重载,则还应提供等号和不等号运算符的实现。
有关如何重写 Equals 和相等运算符的更多信息,请参见 Guidelines for Implementing Equals and the Equality Operator (==)(Equals 和相等运算符 (==) 的实现准则)。
如何调查警告
有关实现 Equals 和相等运算符的示例,请参见代码分析规则 CA1815:重写值类型上的 Equals 和相等运算符。