私はクラスがありIComparable
ます:
public class a : IComparable
{
public int Id { get; set; }
public string Name { get; set; }
public a(int id)
{
this.Id = id;
}
public int CompareTo(object obj)
{
return this.Id.CompareTo(((a)obj).Id);
}
}
このクラスのオブジェクトのリストをハッシュセットに追加すると、次のようになります。
a a1 = new a(1);
a a2 = new a(2);
HashSet<a> ha = new HashSet<a>();
ha.add(a1);
ha.add(a2);
ha.add(a1);
すべてが問題なく、ha.count
ですが2
、:
a a1 = new a(1);
a a2 = new a(2);
HashSet<a> ha = new HashSet<a>();
ha.add(a1);
ha.add(a2);
ha.add(new a(1));
今ha.count
です3
。
- の方法を
HashSet
尊重しないのはなぜですか。a
CompareTo
HashSet
一意のオブジェクトのリストを作成する最良の方法はありますか?
IEqualityComparer<T>
コンストラクタに追加するか、クラスに実装しa
ます。msdn.microsoft.com/en-us/library/bb301504(v=vs.110).aspx