C#List <t>使用IComparer参数排序会产生编译错误</t>

时间:2011-03-03 16:43:50

标签: c# list sorting icomparer

有人可以向我解释这是如何工作的吗?我按照http://msdn.microsoft.com/en-us/library/234b841s.aspx找到的MSDN示例进行了操作。

我制作了自己的CustomObject并为它制作了一个Comparer。

以下是CustomObjectComparer类:

public class CustomObjectComparer : System.Collections.Generic.IComparer<CustomObject>
{
    public int Compare(CustomObject co1, CustomObject co2)
    {
         //Impementation Omitted
    }

}

然后当我有一个List<CustomObject>并尝试执行以下操作时,我遇到了编译错误。

List<CustomObject> list = new List<CustomObject>();
CustomObjectComparer comparer = new CustomObjectComparer();
list.Sort(comparer);

错误: Argument 1: cannot convert from 'CustomObjectComparer' to 'System.Collections.Generic.IComparer<CustomObject>'

CustomObjectComparer是不是System.Collections.Generic.IComparer

1 个答案:

答案 0 :(得分:4)

看起来您的列表包含CustomObjectComparer s,而不是CustomObject s。

您可以传递一个可以比较CustomObjectComparer的比较器,或者(更有可能)将列表更改为List<CustomObject>

编辑:如果您有两种名为CustomObject的类型,或者您也有不同的错误,则会发生这种情况。