gpt4 book ai didi

c# - ArrayList.Sort() 与 IComparable 实现

转载 作者:太空宇宙 更新时间:2023-11-03 11:45:52 26 4
gpt4 key购买 nike

当我编写这段代码时,我在 Sort() 方法上遇到错误。

       ArrayList al = new ArrayList();
al.Add("I");
al.Add("am");
al.Add(27);
al.Add("years old");


foreach (object o in al)
{
Console.Write("{0} ", o.ToString());
}

al.Sort();
Console.WriteLine();
foreach (object o in al)
{
Console.Write("{0} ", o.ToString());
}

好吧,我可以理解排序方法失败了,因为我在集合中同时包含了字符串和整数。

但是当我拥有所有字符串或所有整数时它不会出错。它的排序效果非常好。

  1. IComparable 实现的属性是什么,可能会导致混合出错?
  2. 它如何识别所有整数或所有字符串进行排序?

最佳答案

它使用对象的compareTo。在 compareTo 内部,该对象将检查被比较对象的类型,并可能会像这样产生错误:

字符串:IComparable

public int compareTo(Object s) {
if (!(s is String)) {
throws new Exception();
}
//do the job
}

数组的sort方法会循环遍历数组的元素,并对每个元素调用compareTo方法与其他元素进行比较

我还建议您使用泛型,这样您就不会不小心将不同种类的对象放入其中。使用 ArrayList<String>

关于c# - ArrayList.Sort() 与 IComparable 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3464488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com