值
规则 ID
CA2013
类别
可靠性
修复是中断修复还是非中断修复
非中断
原因
使用 System.Object.ReferenceEquals 方法来测试一个或多个值类型是否相等。
规则说明
使用 ReferenceEquals 比较值时,如果 objA 和 objB 是值类型,则会先对其进行装箱然后才会将其传递给 ReferenceEquals 方法。 这意味着,即使 objA 和 objB 都表示同一个值类型实例,ReferenceEquals 方法也会返回 false,如下面的示例所示。
如何解决冲突
若要解决此冲突,请将其替换为更合适的相等性检查,如 ==。
int int1 = 1, int2 = 1;
// Violation occurs, returns false.
Console.WriteLine(Object.ReferenceEquals(int1, int2)); // false
// Use appropriate equality operator or method instead
Console.WriteLine(int1 == int2); // true
Console.WriteLine(object.Equals(int1, int2)); // true
何时禁止显示警告
不可忽略此规则的警告,我们建议使用更合适的相等运算符,如 ==。
相关规则
CA2231:重写 ValueType.Equals 时应重载相等运算符
另请参阅
可靠性规则
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。