我正在考虑用SortedSet替换HashSet,因为它更适合我正在存储的数据。
然而,到目前为止我看到的所有例子都与存储简单对象有关 - int,字符串等。
我想为具有许多属性的自定义类实现此功能,但该类还包含一个我想用作“索引器”的日期。
问题是如何为要使用的集声明自定义索引器,这将覆盖默认行为?
提前致谢。
答案 0 :(得分:4)
实现IComparer并将其传递给SortedSet构造函数;
请参阅:
https://msdn.microsoft.com/en-us/library/dd395024%28v=vs.110%29.aspx
例如:我用这个
internal class SortedIndex
{
public double Comparable { get; set; }
public int Index { get; set; }
}
internal class SortedIndexComparar : IComparer<SortedIndex>
{
public int Compare(SortedIndex x, SortedIndex y)
{
return x.Comparable.CompareTo(y.Comparable);
}
}
答案 1 :(得分:1)
假设“indexer”表示“排序”,您只需创建类型工具IComparable<Foo>
,并提供CompareTo
方法,将this
中的日期与日期内的日期进行比较其他Foo
。
或者您可以实施IComparer<Foo>
(使用Compare(Foo x, Foo y)
方法)并将其传递给SortedSet
构造函数。
在这两种情况下,你基本上只是允许排序集合在另一个之前运行 - 然后在需要时使用它来执行比较。
请注意,这意味着具有相同日期的任何值都将被视为相等,因此您只能为每个日期设置一个值。如果那不是你想要的,你的比较需要在日期相等的时候使用其他一些鉴别器。