c# - 比较参考警告时强制转换为对象
问题描述
当我比较一个this
类中的引用时,它会给我一个警告:
可能的意外参考比较;要进行值比较,请将左侧转换为 Object
它是一个非常简单的代码行:
if (otherTarget != null && otherTarget.TargetComponent == this)
它完全按照我的意图工作,但是有这个警告,我不知道为什么?我可以忽略它,还是我的代码逻辑做错了什么?
解决方案
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
推荐阅读
- android-studio - 着色字符串的子字符串
- linux - USB端口监控
- python - 有效计算元素的出现次数
- python - 带有多个子句的 Numpy 索引
- python - 如何修复 PyCharm python 控制台提示符?
- amazon-cloudwatch - AWS EMR - CloudWatch 代理是否需要通过引导安装?
- r - 如果它们在某个日期范围内,请保持公司观察
- java - 无法解决(java.lang.NullPointerException)问题
- html - 为什么它显示错误 405 不允许使用 Github 页面
- kotlin - 在 elide GET 中添加额外的过滤器