在C#中,Array.Sort()
方法支持多种数据类型进行排序。这些数据类型包括:
int
, short
, byte
, sbyte
, long
, ulong
, float
, double
, decimal
等。string
类型也是可排序的。Array.Sort()
对其进行排序。IComparable
接口或者提供了 IComparer<T>
的比较器,Array.Sort()
也可以对其进行排序。这里有一个简单的例子,展示了如何使用 Array.Sort()
对不同类型的数组进行排序:
using System;
class Program
{
static void Main()
{
// 对基本数据类型的数组进行排序
int[] intArray = { 5, 2, 9, 1, 5, 6 };
Array.Sort(intArray);
Console.WriteLine("Sorted integers:");
foreach (int num in intArray)
{
Console.Write(num + " ");
}
Console.WriteLine();
// 对字符串类型的数组进行排序
string[] strArray = { "apple", "banana", "cherry", "date" };
Array.Sort(strArray);
Console.WriteLine("Sorted strings:");
foreach (string str in strArray)
{
Console.Write(str + " ");
}
Console.WriteLine();
// 对自定义类型的数组进行排序(假设有一个名为 Person 的类,并实现了 IComparable 接口)
Person[] personArray = new Person[]
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 35 }
};
Array.Sort(personArray);
Console.WriteLine("Sorted persons by age:");
foreach (Person person in personArray)
{
Console.Write($"{person.Name} ({person.Age}) ");
}
Console.WriteLine();
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override int CompareTo(object obj)
{
if (obj is Person other)
{
return this.Age.CompareTo(other.Age);
}
throw new ArgumentException("Object must be of type Person");
}
}
注意:在上面的例子中,Person
类实现了 IComparable<Person>
接口,并重写了 CompareTo()
方法,以便根据年龄对 Person
对象进行排序。