警告==用于引用(Visual Studio或ReSharper)

问题描述 投票:0回答:1

根据==MSDN运算符的文档,

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

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

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

当对引用(字符串除外)使用==时,是否可以通过Visual Studio或ReSharper触发警告/错误?

c# visual-studio reference resharper equality
1个回答
0
投票

这不是全局解决方案,但是如果我们只考虑某些类,则CannotApplyEqualityOperatorAttribute中的JetBrains.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; 
    }
}

仍在等待,看看是否有更通用的替代方法。

© www.soinside.com 2019 - 2024. All rights reserved.