在编写比较器类时,从C# 4.0版本开始的最佳实践是什么:
a. 我们应该继承自Comparer抽象类吗?还是
b. 应该实现IComparer接口。
这样做的优缺点是什么?
Comparer<T>
类,而不是实现 IComparer<T>
接口,就像微软所做的一样(请参见下面的第一个参考文献)。IComparable
接口(请参见下面的第二个参考文献)。
IComparer<T>
)
来自:http://msdn.microsoft.com/en-us/library/cfttsh47(v=vs.110).aspx (我们建议您从
Comparer<T>
类派生,而不是实现IComparer接口,因为Comparer<T>
类提供了IComparer.Compare
方法和Default
属性的显式接口实现,获取对象的默认比较器。
Comparer<T>
)IComparer<T>
接口的自定义实现,用于与集合类(例如SortedList<TKey, TValue>
和SortedDictionary<TKey, TValue>
通用类)一起使用。
从Comparer类派生和实现System.IComparable
接口之间的区别如下:
System.IComparable
接口。这确保排序操作将使用您提供的默认比较代码。Comparer<T>
类? - user585968Comparer<T>
的MSDN页面的直接引用,所以是的。 - myermianComparer<T>类
...”。
您的答案在另一个城堡:何时回答才不是回答? - user585968来自MSDN上的这篇文章:
我们建议您从Comparer类派生,而不是实现IComparer接口,因为Comparer类提供了IComparer.Compare方法的显式接口实现和获取对象默认比较器的Default属性。
IComparer
。 - mihaiIComparer
是更好的方式,因为它以后可能会在 LINQ 中使用。 - Marek Woźniak