"无法转换为IComparer"

Odr*_*ade 4 c# icomparer

我为盒装的RegistryItem对象定义了以下IComparer:

public class BoxedRegistryItemComparer : IComparer<object>
{
    public int Compare(object left, object right)
    {
        RegistryItem leftReg = (RegistryItem)left;
        RegistryItem rightReg = (RegistryItem)right;

        return string.Compare(leftReg.Name, rightReg.Name);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想用它来对盒装的RegistryItems的ArrayList进行排序(它确实应该是一个List <RegistryItem>,但这不受我的控制).

ArrayList regItems = new ArrayList();
// fill up the list ...
BoxedRegistryItemComparer comparer = new BoxedRegistryItemComparer();
ArrayList.sort(comparer);
Run Code Online (Sandbox Code Playgroud)

但是,最后一行给出了编译器错误:"无法从BoxedRegistryItemComparer转换为System.Collections.IComparer".如果有人能指出我的错误,我将不胜感激.

man*_*nji 8

BoxedRegistryItemComparer应该实施System.Collections.IComparer使用ArrayList.Sort.你实现了System.Collections.Generic.IComparer<T>哪些不是一回事.


Bob*_*bby 7

您已经定义了Generic-Comparer(IComparer<T>)而不是没有type(IComparer)Comparer.ArrayList.Sort()期望非泛型IComparer.

通用类型不能转换为非泛型等价物.