首页 > 解决方案 > 在引用上使用 == 时发出警告(Visual Studio 或 ReSharper)

问题描述

根据MSDN==中运营商的文档,

对于字符串以外的引用类型,== 如果它的两个操作数引用同一个对象,则返回 true。

但是,老实说,我从不检查两个引用是否与==.
我更喜欢使用函数ReferenceEquals(obj1, obj2)的默认覆盖也是如此Equals

因此,在我的项目中,当 == 运算符用于字符串以外的其他类型时,就等于一个错误。

当 == 用于引用(字符串除外)时,有没有办法通过 Visual Studio 或 ReSharper 触发警告/错误?

标签: c#visual-studioreferenceresharperequality

解决方案


它不是一个全局解决方案,但如果我们只想考虑一些类,那么CannotApplyEqualityOperatorAttributeinJetBrains.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; 
    }
}

仍在等待是否有更通用的替代方案。


推荐阅读