次のように辞書を実装しました。
Dictionary<ErrorHashKey, ErrorRow> dictionary;
クラスでEquals()
andを定義しGetHashCode()
ました。ErrorHashKey
私は現在、プロジェクトのいくつかのドキュメントを作成しており、IEqualityComparer Interface docからこれに出くわしました:
ディクショナリには、キーが等しいかどうかを判断するための等価実装が必要です。比較パラメーターを受け入れるコンストラクターを使用して、IEqualityComparer ジェネリック インターフェイスの実装を指定できます。実装を指定しない場合、デフォルトの汎用等値比較子 EqualityComparer.Default が使用されます。TKey 型が System.IEquatable ジェネリック インターフェイスを実装している場合、既定の等値比較子はその実装を使用します。
ドキュメントで指定されていることは何もしていません (少なくとも、そうではないと思います)。コンストラクター パラメーターに比較子を渡したり、比較子を作成したりしませんEqualityComparer.Default
。
は、System.IEquatable<T> generic interface
作成されたすべてのクラスに自動的に実装されますか? の実装を定義する必要がありIEqualityComparer<T>
ますか?