Eth*_*len 1 .net c# silverlight visual-studio windows-phone-7
我正在使用位于此处的NumericComparer代码.将它添加到项目中非常容易:NumericComparer
我有一个包含数字的字符串列表,我的代码就是这样: myList.Sort(new NumericComparer());
我得到的错误是这样的:
无法从'ns.NumericComparer'转换为'System.Collections.Generic.IComparer'
有什么想法吗?
看起来该Sort方法期望实现IComparer<T>- generic,带有类型参数,而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
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在你可以打电话了 myList.Sort(new GenericNumericComparer<decimal>());
(注意,你实际上也可以调用你的泛型类NumericComparer- 它通过类型参数来区分.为了清楚起见,我在这里添加了"Generic".)