나는 수업이 있습니다 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/ko-kr/library/bb301504(v=vs.110).aspx