Я немного озадачен поведением SortedSet, см. следующий пример:
public class Blah
{
public double Value { get; private set; }
public Blah(double value)
{
Value = value;
}
}
public class BlahComparer : Comparer<Blah>
{
public override int Compare(Blah x, Blah y)
{
return Comparer<double>.Default.Compare(x.Value, y.Value);
}
}
public static void main()
{
var blahs = new List<Blah> {new Blah(1), new Blah(2),
new Blah(3), new Blah(2)}
//contains all 4 entries
var set = new HashSet<Blah>(blahs);
//contains only Blah(1), Blah(2), Blah(3)
var sortedset = new SortedSet<Blah>(blahs, new BlahComparer());
}
Так SortedSet отбрасывает записи, если Compare (x, y) возвращает 0. Могу ли я предотвратить это, так что мой SortedSet ведет себя как HashSet и отбрасывает записи только в том случае, если Equals() возвращает true?