【发布时间】:2018-03-22 08:27:45
【问题描述】:
我有一个通用列表管理器类 ListManager,我用它来将 AnimalManager 子类中的 Animal 对象存储到列表管理器中。
在 Animal 类中,我添加了 IComparer 接口并添加了一个 Compare 方法。
由于某种原因,我在下面的排序方法代码中的 ListManager 中出现错误。
在 ListManager....
//Method for sorting.
public void SortComp(T aType)
{
aList.Sort(aType); //This is where I get the error
}
在动物中......
//Def field sortby enum with default value name
private SortBy compareField = SortBy.Name;
//Getter and setter
public SortBy CompareField
{
get { return compareField; }
set
{
compareField = value;
}
}
//Method (as specified by IComparer) for comparing two objects. Makes use of CompareTo method
public int Compare(Animal x, Animal y)
{
//Depending on how the comparefield is set do different sorting
switch (compareField)
{
case SortBy.Name:
return x.Name.CompareTo(y.Name);
case SortBy.ID:
return x.ID.CompareTo(y.ID);
default:
return x.Name.CompareTo(y.Name);//Just in case
}
}
【问题讨论】:
-
“一个错误”?请具体说明您遇到的错误。另外,“list.Sort(element)”是什么意思?
-
另外,将排序信息嵌入到列表中的每个元素中是非常罕见的并且可能有问题/错误,如果两个元素指定不同的排序信息怎么办?
-
请发布错误 - 我们不介意读者。
-
error is Argument 1: cannot convert from 'T' to 'Syste.Collections.Generic.IComparer
-
我首先创建了一个 AnimalComparer 类 bu,但它也不起作用......得到了同样的错误
标签: c# list sorting generics icomparer