基于我在.Sort()上找到的内容,这应该可行
using System;
using System.Linq;
public class Test
{
public static void Main()
{
int[] test = new int[] {6, 2, 1, 4, 9, 3, 7};
test.Sort((a,b) => a<b);
}
}
但是,我收到此错误消息:
error CS1660: Cannot convert `lambda expression' to non-delegate type `System.Array'
这是我能找到的最简单的错误版本。在我的情况下,我正在使用一个字符串,给它一个复杂的排名值,然后比较它。
我在这里缺少什么?
答案 0 :(得分:5)
您所追求的overload of Sort需要delegate that takes in two objects of the type contained within the array, and returns an int
。您需要更改表达式以返回int
,其中您返回的值为前一个项目的负值,当项目为&#34;等于&#34;时为零,并为项目返回正值来到另一个。
此外,对于数组,Sort
方法为static
,因此您使用类名称而不是实例来调用它:
Array.Sort(test, (left, right) => left.CompareTo(right));
CompareTo
是IComparable
类型的内置函数(如int
),它以我上面描述的方式返回int
,所以它方便用于分类。