Mik*_*kos 2 c# sorting icomparable points
我试图先按x坐标,然后按y坐标对2D点列表进行排序.我实现了IComparer接口,如下所示:
class PointComparer : IComparer<Point>
{
public int Compare(Point x, Point y)
{
if (x.Y != y.Y)
{
return x.Y - y.Y;
}
else
{
return x.X - y.X;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后调用我的排序如下:
pointsList.Sort(new PointComparer());
Run Code Online (Sandbox Code Playgroud)
由于某种原因,列表不排序.肯定是非常简单和愚蠢的事情,但坚持了很长一段时间...... TIA
这应该更好:
class PointComparer : IComparer<Point>
{
public int Compare(Point first, Point second)
{
if (first.X == second.X)
{
return first.Y - second.Y;
}
else
{
return first.X - second.X;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果X值不同,它将使用Y值进行排序.这与您的代码不同,如果Y值相同,将使用X值.
正如其他人提到的,如果你可以使用Linq,你应该使用OrderBy
和ThenBy
扩展方法:
pointsList.OrderBy(p => p.X).ThenBy(p => p.y)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13044 次 |
最近记录: |