मैं एक वर्ग है कि है 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' के एक कार्यान्वयन जोड़ें या वर्ग 'A' में कार्यान्वित करें। https://msdn.microsoft.com/en-us/library/bb301504(v=vs.110).aspx –
Jaider