C#Sort,无法将lambda表达式转换为System.Array

Nat*_*ngs 1 c# lambda

基于我在.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)

这是我能找到的最简单的版本来获得该错误.在我的情况下,我正在使用一个字符串,给它一个复杂的排名值,并进行比较.

我在这里错过了什么?

Ken*_* K. 5

排序的过载,你是后期望一个代表取入包含在数组内的类型的两个对象,并返回一个int.您需要更改表达式以返回a int,其中对于前一个项目返回值为负值,当项目为"相等"时返回零值,对于另一个项目后面的项目返回正值.

此外,对于数组,Sort方法是static,所以你使用类名称而不是实例来调用它:

Array.Sort(test, (left, right) => left.CompareTo(right));
Run Code Online (Sandbox Code Playgroud)

CompareToIComparable(类似int)类型的内置函数,它int以我上面描述的方式返回,因此用于排序很方便.