在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
。最后,我們遍歷并打印排序后的向量列表。