gpt4 book ai didi

C# 使用 IComparable 时出现排序错误

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:53 24 4
gpt4 key购买 nike

我花了几个小时尝试使用 IComparable 对 ArrayList 进行排序...

请注意,我不能使用 IComparer 来执行此操作。

代码如下:

class Pays : IComparable<Pays>
{
private string nomPays;

public string NomPays{get{return nomPays;}set{nomPays = value;}}

public int CompareTo(object x)
{
Pays myX = (Pays)x;
return string.Compare(this.nomPays, x.nomPays);
}
}

class TestPays
{
public static ArrayList LireRemplirPays(){ //...blabla
return uneListe;
}
static void Main(string[] args){
ArrayList paysList = LireRemplirPays();
paysList.Sort();
}
}

错误粘贴:System.ArgumentException:至少一个对象必须实现 IComparableSystem.Collections.Comparer.Compare(对象a,对象b)......

我能做什么?感谢阅读

编辑:

所以我的第一个错误是:

class Pays : IComparable<Pays>

代替

class Pays : IComparable

第二个错误:

return nomPays.CompareTo(myX.nomPays);

最佳答案

您应该使用通用列表而不是 ArrayList:

class TestPays
{
public static <b>List<Pays></b> LireRemplirPays() { //...blabla
return uneListe; // Cast here if necessary
}
static void Main(string[] args) {
<b>List<Pays></b> paysList = LireRemplirPays();
paysList.Sort();
}
}

ArrayList 不是通用的,可以包含任何类型的对象,并且 object 没有实现 IComparable

此外,如果 NomPays 实际上不做任何检查,您可以使用速记而不必显式声明支持字段:

public string Nom { get; set; }

关于C# 使用 IComparable 时出现排序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16124411/

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