2012-05-01 19 views
5

クラス内のEquals()のオーバーライドでのコード変更がコードに与える影響を判断したいと思います。すべての参照を検索するときにメソッドのオーバーライドをスキップする方法

public override bool Equals(object obj) 
    { 
    // My code to be changed 
    return true; 
    } 

私は、Shiftキーを押しながらF12をすべての参照を見つけるために行うと、Visual Studioは、私は()はObject.equalsを呼び出しています126703点の場所を返します。

参照を検索するときに、Equals()メソッドのオーバーライドをスキップする方法はありますか?

+0

http://stackoverflow.com/questions/7399284/c-how-to-find-references-to-equals-operator-for-a-particular-class-in-visual-sで似たような質問があります – GregC

+1

私はMarkの[Obsolete]トリックが好きです。 – GregC

+0

しかし、 "エラーCS0809:警告としてエラー:廃止されたメンバー 'Foo.ToString()'は、廃止されていないメンバー 'object.ToString()'をオーバーライドします。 "#pragma warning disable 809"の場合、[Obsolete]属性は無視されます。 :-P – yoyo

答えて

5

Equals方法がobjectレベルで定義されているので、あなたのクラスの目的は、容易にそれがobjectであることよりも、より多くの何も知らないEqualsを呼び出すメソッドに渡すことができます。

たとえば、オブジェクトをHashSetに追加する場合、またはオブジェクトを含むコレクションで.Distinct()を呼び出す場合、間接的にEqualsが呼び出されます。

Equalsをオーバーライドするすべての場所を検索する唯一の方法は、クラスが使用されているすべての場所を見つけて、その処理が完了しているかどうかを確認することです。

+1

これは完全にそれを説明します...しかし、少年は私は失望しています。私は今すぐ櫛を切るコードがたくさんあります。 –

関連する問題