【发布时间】:2014-04-13 20:42:49
【问题描述】:
我有一个实现IComparable的类。它有效,但比较是静态的,即它始终与它实现的 ordering 相同。什么是通过参数引入比较的好方法,即如果我们有:
class Poo : IComparable {
public int A { ... };
public int B { ... };
...
}
IEnumerable<Foo> list = ...;
list = list.Sort(???);
我想根据问号处传递给 Sort 的参数对 A 或 B 的列表进行排序。最有效的方法是什么?
目前,我想出的最佳方法是声明几个我传递给 Sort 的方法作为委托。
private static int CompareWrtA(Foo foo1, Foo foo2) { ... }
private static int CompareWrtB(Foo foo1, Foo foo2) { ... }
if(withRespectToA)
list = list.Sort(CompareWrtA);
else
list = list.Sort(CompareWrtB);
但这并不是最好的方法。欢迎批评。
【问题讨论】:
-
那么你到底想要什么?你想简化这个吗?或者当您有更多的参数和条件进行排序时,您是否想要一个解决方案来处理这种情况?
标签: c# sorting compare icomparable