34

HashSet引数のないコンストラクターのMSDN APIでは、それは述べています

空であり、セット型の既定の等値比較子を使用する HashSet クラスの新しいインスタンスを初期化します。

カスタムクラスなど、セットタイプのデフォルトの等値比較子は何ですか?

ところで: それは私だけですか、それとも MSDN API ドキュメントの説明は本当に少し薄いですか? それを読んでいると、そのような質問に何度も出くわします。

4

2 に答える 2

10

デフォルトでは、 に委任されEqualityComparer<T>.Defaultます。これは、 type の 2 つのオブジェクトを比較できる比較子を返しますT

カスタム クラスの場合、これは次の順序でいくつかのことを行います。

  • クラスが を実装する場合、IEquatable<T>このインターフェイスのクラスの実装に委譲します
  • クラスにEqualsメソッドが定義されている場合、それを使用します
  • 最後の手段として、参照の等価性を使用します
于 2013-06-20T22:37:36.880 に答える