基于我在.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);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误消息:
error CS1660: Cannot convert `lambda expression' to non-delegate type `System.Array'
Run Code Online (Sandbox Code Playgroud)
这是我能找到的最简单的版本来获得该错误.在我的情况下,我正在使用一个字符串,给它一个复杂的排名值,并进行比较.
我在这里错过了什么?
该排序的过载,你是后期望一个代表取入包含在数组内的类型的两个对象,并返回一个int.您需要更改表达式以返回a int,其中对于前一个项目返回值为负值,当项目为"相等"时返回零值,对于另一个项目后面的项目返回正值.
此外,对于数组,Sort方法是static,所以你使用类名称而不是实例来调用它:
Array.Sort(test, (left, right) => left.CompareTo(right));
Run Code Online (Sandbox Code Playgroud)
CompareTo是IComparable(类似int)类型的内置函数,它int以我上面描述的方式返回,因此用于排序很方便.