我有一个List<Points>(),我想用自定义比较器函数对它进行排序.
我做了:
public int MyCompare(Point p1, Point p2)
{
...
}
// In my main
// ...
points_.Sort(MyCompare);
// ...
Run Code Online (Sandbox Code Playgroud)
我工作,好吧.
现在我想排序除第一个元素之外的所有元素,所以我想这样做:
points_.Sort(1, points_.Count()-1, MyCompare);
Run Code Online (Sandbox Code Playgroud)
但是,由于这个重载,他希望将IComparer作为参数.
我怎么解决这个问题?
请注意,Point 它不是自定义类,而是来自Xna框架.我不想用它来实现自定义类: IComparer
如果您不想实现IComparer,可以使用Comparer<T>.Create静态方法从委托创建一个,如下所示:
points_.Sort(1, points_.Count()-1, Comparer.Create(MyCompare));
Run Code Online (Sandbox Code Playgroud)
甚至
points_.Sort(1, points_.Count()-1, Comparer.Create((a, b) => {
... // comparison logic goes here
}));
Run Code Online (Sandbox Code Playgroud)