Mam klasę, która jest 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);
}
}
Kiedy dodam listę obiektów tej klasy do zestawu skrótów:
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);
Wszystko jest w porządku i ha.count
jest 2
, ale:
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));
Teraz ha.count
jest 3
.
- Dlaczego nie
HashSet
szanowaća
„sCompareTo
metody. - Czy
HashSet
najlepiej jest mieć listę unikalnych obiektów?
IEqualityComparer<T>
w konstruktorze lub zaimplementuj ją w klasiea
. msdn.microsoft.com/en-us/library/bb301504(v=vs.110).aspx