我想首先基于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)来对它进行排序类.
提前致谢.
是的,你正在寻找IComparable<T>和IComparer<T>-后者是相当于Comparator<E>在Java接口.
如果要向Point类本身添加比较,请创建Point实现IComparable<Point>(也可能是非泛型IComparable接口).如果要在其他地方实现比较,请创建另一个类实现IComparer<Point>.
为了平等,.NET也有IEquatable<T>和IEqualityComparer<T>.这些用于密钥比较等内容Dictionary<,>.
作为旁注,我强烈建议您不要使用公共字段 - 您可能想要制作变量readonly.(不可变类型通常更容易推理.)你可能决定做Point一个struct,而不是一个class.