我对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时丢弃条目?
.Value
匹配,您也可以比较x和y的引用值。 - Rup