阅读量:0
在C#中,你可以使用List<T>
和自定义的比较器来实现自定义的Vector排序规则
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<Vector> vectors = new List<Vector> { new Vector(1, 2), new Vector(3, 4), new Vector(-1, -2) }; vectors.Sort(new VectorComparer()); foreach (var vector in vectors) { Console.WriteLine($"({vector.X}, {vector.Y})"); } } } public class Vector { public int X { get; set; } public int Y { get; set; } public Vector(int x, int y) { X = x; Y = y; } } public class VectorComparer : IComparer<Vector> { public int Compare(Vector v1, Vector v2) { // 自定义排序规则,例如按照曼哈顿距离排序 int distance1 = Math.Abs(v1.X) + Math.Abs(v1.Y); int distance2 = Math.Abs(v2.X) + Math.Abs(v2.Y); return distance1.CompareTo(distance2); } }
在这个示例中,我们创建了一个名为Vector
的类,并实现了一个名为VectorComparer
的自定义比较器。VectorComparer
实现了IComparer<Vector>
接口,并重写了Compare
方法,该方法定义了排序规则。在这个例子中,我们按照曼哈顿距离对向量进行排序。
然后,我们创建了一个List<Vector>
,并使用Sort
方法对其进行排序。Sort
方法接受一个IComparer<T>
参数,所以我们可以传入自定义的比较器VectorComparer
。最后,我们遍历并打印排序后的向量列表。