4

C#で記述されたライブラリのテストを作成しています。そして、2つのリストが同じ要素を持っている場合にのみ、同じであるかどうかをテストしたいと思います(同じ順序の要素は必要ありません)。リストをハッシュセットに変換して、2つのハッシュセットが同じかどうかを確認しようとしています。しかし、実行結果は私が期待したものではありません。

ハッシュセットにメソッドが含まれている方法を誰かが説明できますか?オブジェクトgetHashCodeメソッドまたはequalsメソッドによって2つのオブジェクトを比較しますか?ありがとう!

4

1 に答える 1

5

HashSetコンストラクターに渡したIEqualityComparer<>を使用します。合格しなかった場合は、EqualityComparer<>。Defaultを使用します。これは、要素タイプがIEquatable <>を実装していない場合、そのタイプのEqualsメソッドとGetHashCodeメソッドを使用します。

あなたのリストには、これらのメソッドをオーバーライドしないオブジェクトが含まれていると思います。IEqualityComparerコンストラクター引数を使用して修正します。

于 2010-09-05T04:35:45.450 に答える