我正在使用此处的NumericComparer代码。将其添加到项目中非常容易:NumericComparer
我有一个包含数字的字符串列表,我的代码就是这样:myList.Sort(new NumericComparer());
我得到的错误是这样的:
无法从“ ns.NumericComparer”转换为“ System.Collections.Generic.IComparer”
有什么想法吗?
最佳答案
看起来Sort
方法期望使用类型参数实现IComparer<T>
的通用实现,而NumericComparer
实现非通用的IComparer
接口。
因此,如果您的列表是List<decimal>
,则需要提供IComparer<decimal>
。
您应该能够快速组合利用NumericComparer
的类:
public class GenericNumericComparer<T> : IComparer<T>
{
private static readonly NumericComparer _innerComparer = new NumericComparer();
public int Compare(T x, T y)
{
return _innerComparer.Compare(x, y); // I'm guessing this is how NumericComparer works
}
}
现在,您可以拨打
myList.Sort(new GenericNumericComparer<decimal>());
(请注意,您实际上也可以调用泛型类
NumericComparer
-它通过类型参数进行区分。为清楚起见,在此处添加了“泛型”。)