在visual studio中找到所有与==的比较

Emi*_*elt 5 c# equals ip-address visual-studio-2008

我犯了错误,使用==来比较IP地址而不是使用C#中IPAddress类的equals()方法,这将导致引用而不是值的比较.由于我目前正在处理的解决方案对于单人项目(> 100.000行源代码)非常大,我非常确定我的代码中仍然有一些错误的语句.

是否有可能告诉Visual Studio为我查找特定类的所有==操作,以便我可以找到并清理错误的比较?

最诚挚的问候,emi

Mar*_*ers 19

这有点像黑客,但您可以暂时将此类添加到您的项目中:

namespace System.Net
{
    class IPAddress
    {
        [Obsolete]
        public static bool operator ==(IPAddress a, IPAddress b) { return true; }
        [Obsolete]
        public static bool operator !=(IPAddress a, IPAddress b) { return true; }
    }
}
Run Code Online (Sandbox Code Playgroud)

编译并查找有关使用过时方法的警告:

Warning 'IPAddress.operator ==(IPAddress, IPAddress)' is obsolete

修复代码后,删除类定义.

  • 虽然我也考虑过这个问题,但是它有一个问题:它只有在你明确声明了一个类型为`IPAddress`的变量时才有效,如果第三方库返回一个`IPAddress`它仍然是真实的,它就不起作用. (2认同)