前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >CA2013:请勿将 ReferenceEquals 与值类型结合使用

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

作者头像
用户4268038
发布2022-02-20 19:33:44
发布2022-02-20 19:33:44
1.2K0
举报
文章被收录于专栏:stcnbstcnb

规则 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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档