【发布时间】:2012-12-29 11:22:09
【问题描述】:
我正在尝试使用IComparer 对点列表进行排序。这是 IComparer 类:
public class CoordinatesBasedComparer : IComparer
{
public int Compare(Object q, Object r)
{
Point a = (p)q;
Point b = (p)r;
if ((a.x == b.x) && (a.y == b.y))
return 0;
if ((a.x < b.x) || ((a.x == b.x) && (a.y < b.y)))
return -1;
return 1;
}
}
在客户端代码中,我尝试使用此类对点 p 列表(List<Point> 类型)进行排序:
CoordinatesBasedComparer c = new CoordinatesBasedComparer();
Points.Sort(c);
代码出错了。显然,它期望 IComparer<Point> 作为 sort 方法的参数。
我需要做什么来解决这个问题?
【问题讨论】:
-
您遇到什么错误?在哪一行?
-
为什么不使用 LINQ,排序更快。
-
@gdoron 我不确定“更快”是否正确; 更方便,也许
-
@MarcGravell,我测试了几次,速度更快。想想看,使用 LINQ,您知道列表何时排序,而使用
IComparer您不知道。更快。