基于两个值C#排序点类列表

IWS*_*IWS 4 c# class

我想首先基于x然后在y上对C#中的类点列表(见下文)进行排序.

public class Point
{
    public int x;
    public int y;
    public Point(int xp, int yp)
    {
        x = xp;
        y = yp;
    }
}
Run Code Online (Sandbox Code Playgroud)

你是怎么做到的:我是C#的新手,与Java比较方法有任何相似之处,它们为类实现了自定义比较器,而且我想在类中添加compare方法(int CompareTo)来对它进行排序类.

提前致谢.

Jon*_*eet 8

是的,你正在寻找IComparable<T>IComparer<T>-后者是相当于Comparator<E>在Java接口.

如果要向Point类本身添加比较,请创建Point实现IComparable<Point>(也可能是非泛型IComparable接口).如果要在其他地方实现比较,请创建另一个类实现IComparer<Point>.

为了平等,.NET也有IEquatable<T>IEqualityComparer<T>.这些用于密钥比较等内容Dictionary<,>.

作为旁注,我强烈建议您不要使用公共字段 - 您可能想要制作变量readonly.(不可变类型通常更容易推理.)你可能决定做Point一个struct,而不是一个class.