首页 > 解决方案 > 比较参考警告时强制转换为对象

问题描述

当我比较一个this类中的引用时,它会给我一个警告:

可能的意外参考比较;要进行值比较,请将左侧转换为 Object

它是一个非常简单的代码行:

if (otherTarget != null && otherTarget.TargetComponent == this)

它完全按照我的意图工作,但是有这个警告,我不知道为什么?我可以忽略它,还是我的代码逻辑做错了什么?

标签: c#

解决方案


this(或其祖先)的类型有一个自定义运算符== ,但表达式otherTarget.TargetComponent == this将用于operator== (object, object)进行引用比较,因此出现警告。

如果您真的想进行参考比较,请将其转换为对象:

otherTarget.TargetComponent == (object)this

如果要使用自定义运算符 ==,请将左侧对象转换为this:

(TYPE_OF_THIS)otherTarget.TargetComponent == this
   or
(otherTarget.TargetComponent as TYPE_OF_THIS) == this

如果你不能决定,禁用是一个选择:

#pragma warning disable 252

推荐阅读