记政府网站建设游戏推广公司
ArrayList 是 .NET Framework 1.1 引入的一个非泛型集合类型,在 C# 现代版本中推荐使用泛型集合如 List 来代替 ArrayList,因为它们提供了更好的类型安全性和性能。
ArrayList 中的元素按照指定顺序进行排序,可以使用 ArrayList.Sort() 方法。然而,默认情况下,ArrayList 的 Sort() 方法要求集合中的所有元素都能相互比较(即实现了 IComparable 接口,比如string、int这种类型的都可以)。
对于更复杂的排序逻辑,你需要创建一个实现了 IComparer 接口的类,并将其传递给 Sort 方法。
例希望根据ArrayList中存储的字符串的 长度做关键字来排序,以下是示例代码
using System;
using System.Collections;
using System.Collections.Generic;//创建了一个名为 StringLengthComparer 的类,它实现了 IComparer 接口
class StringLengthComparer : IComparer
{//重写了 Compare 方法以根据字符串的长度来进行比较public int Compare(object x, object y){string s1 = x as string;string s2 = y as string;if (s1 == null || s2 == null){throw new ArgumentException("Both objects must be strings.");}return s1.Length.CompareTo(s2.Length); // 按字符串长度比较}
}class Program
{static void Main(){ArrayList arrayList = new ArrayList() { "apple", "banana", "pear", "kiwi" };arrayList.Sort(new StringLengthComparer()); // 使用自定义比较器按长度排序foreach (var item in arrayList){Console.WriteLine(item);}}
}
请注意,由于 ArrayList 是非泛型集合,所以在处理时需要进行适当的类型检查和转换。在现代C#编程中,推荐使用泛型集合(如 List)代替 ArrayList 以提高代码的安全性和性能。对于泛型集合,可以更方便地使用 Lambda 表达式或 LINQ 提供排序功能。