c# - 在引用上使用 == 时发出警告(Visual Studio 或 ReSharper)
问题描述
根据MSDN==
中运营商的文档,
对于字符串以外的引用类型,== 如果它的两个操作数引用同一个对象,则返回 true。
但是,老实说,我从不检查两个引用是否与==
.
我更喜欢使用函数ReferenceEquals(obj1, obj2)
的默认覆盖也是如此Equals
。
因此,在我的项目中,当 == 运算符用于字符串以外的其他类型时,就等于一个错误。
当 == 用于引用(字符串除外)时,有没有办法通过 Visual Studio 或 ReSharper 触发警告/错误?
解决方案
它不是一个全局解决方案,但如果我们只想考虑一些类,那么CannotApplyEqualityOperatorAttribute
inJetBrains.Annotations
就可以了。
[CannotApplyEqualityOperator]
public sealed class NonEquatable { }
public sealed class OtherClass
{
public bool DoForbiddenStuff()
{
var obj1 = new NonEquatable();
var obj2 = new NonEquatable();
// ERROR! 'Cannot apply equality operator to type marked by CannotApplyEqualityOperatorAttribute'
return obj1 == obj2;
}
}
仍在等待是否有更通用的替代方案。
推荐阅读
- python - 如何从熊猫表中自动分配变量?
- react-native - 我可以使用 reanimated 2.0 或原生驱动程序来为 react-native-raw-bottom-sheet 的高度设置动画吗?
- android - 在 livedata 中更改列表项值的正确方法
- postgresql - Postgres - 创建对 VIEW 而不是底层 TABLE 具有只读访问权限的用户
- python - 我尝试将其转换为 int 也同样的错误
- express - 如何使用 ws 库将 websocket 会话保存到 redis?
- sql - 如何在 DB2 中存储长十进制值
- swift - 无法在当前上下文 RxSwift 中推断闭包参数的类型
- java - 将功能分成几部分对内存管理有好处吗?
- ios - 收到“[FIRAuth auth] signInAnonymouslyWithCompletion”错误