gpt4 book ai didi

c# - 在 C# 中使用 NumericComparer 代码,为什么我的 List.Sort() 会出现转换错误?

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:37 24 4
gpt4 key购买 nike

我正在使用位于此处的 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——它通过类型参数来区分。为了清楚起见,我在这里添加了“Generic”。)

关于c# - 在 C# 中使用 NumericComparer 代码,为什么我的 List.Sort() 会出现转换错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9594810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com