C# 引用上使用的==警告(Visual Studio或ReSharper)

C# 引用上使用的==警告(Visual Studio或ReSharper),c#,visual-studio,reference,resharper,equality,C#,Visual Studio,Reference,Resharper,Equality,根据中==操作员的文档 对于字符串以外的引用类型,==如果其两个操作数引用同一对象,则返回true 但是,老实说,我从来不会用==检查两个引用是否相同 我更喜欢使用ReferenceEquals(obj1,obj2)以及Equals函数的默认覆盖 因此,在我的项目中,当==运算符用于字符串以外的其他类型时,等于一个bug 是否有一种方法可以在VisualStudio或ReSurpar上使用一个警告来触发警告/错误(除了字符串之外)?< /P> < P>这不是一个全局的解决方案,但是如果我们只考虑

根据中
==
操作员的文档

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

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

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


是否有一种方法可以在VisualStudio或ReSurpar上使用一个警告来触发警告/错误(除了字符串之外)?< /P> < P>这不是一个全局的解决方案,但是如果我们只考虑一些类,<代码> CANNOPPLAYAULATION操作程序属性< /代码>在<代码> JeWord中。注释< /代码>有诀窍。

[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; 
    }
}

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

正如建议的那样,我创建了一个扩展来实现这一点

如果您感兴趣,这里是指向市场中的链接。
这里是链接到


此时,它不会检查对象是否具有对运算符“==”和“!=”的覆盖。欢迎任何想捐款的人捐款。

您可以感谢@Crowcoder,这似乎是一个可行的解决方案。但让我惊讶的是,现在还没有什么东西可以解决这个问题。分析工具就是解决这个问题的工具。VisualStudio和resharper使用它们来提供该功能。但是如果对象覆盖了equals方法呢?那么分析器也可以检测到吗?