C# 比较器创建lambda函数无法隐式转换类型CS0029
我正在尝试为数据结构添加比较器,如下所示:C# 比较器创建lambda函数无法隐式转换类型CS0029,c#,.net,data-structures,compiler-errors,compare,C#,.net,Data Structures,Compiler Errors,Compare,我正在尝试为数据结构添加比较器,如下所示: private SortedSet<int> sortedScore = new SortedSet<int>(Comparer<int>.Create( (a, b) => a > b)); 我没有得到任何错误,事实上,除此之外的任何东西都会得到与上面相同的错误。那么,如何将比较器更改为默认值以外的其他值呢 因为IComparer必须提供一种方法 int Compare(T x
private SortedSet<int> sortedScore = new SortedSet<int>(Comparer<int>.Create(
(a, b) => a > b));
我没有得到任何错误,事实上,除此之外的任何东西都会得到与上面相同的错误。那么,如何将比较器更改为默认值以外的其他值呢 因为IComparer必须提供一种方法
int Compare(T x, T y)
也就是说,它必须返回int,而不是bool
如果a>b,它必须返回int>0。
如果a=b,则必须返回0。
如果a
如果要实现自己的逻辑,可以将lambda编写为:
(a, b) => a > b ? +1 : a < b ? -1 : 0
您的数据结构类型为SortedSet。因此,您只能使用的比较器应该实现IComparer接口。此接口有一个名为Compare的方法,其签名如下:
int Compare(int x, int y)
并比较两个值x和y,并返回一个值,该值指示一个值是小于、等于还是大于另一个值。有关更多信息,请查看
也就是说,不能使用返回bool的方法。这就是您收到此错误消息的原因
int Compare(int x, int y)