无法将void转换为列表,返回已排序的列表

时间:2018-02-20 07:04:37

标签: c# list sorting

我想返回一个排序列表,但它给了我这个错误。我该怎么办?

public class sortA : sortMethod
{
    public override List<int> Sort(List<int> A)
    {
        //List<int> Asorted = new List<int>();
        //Asorted = A.Sort(){ };
        return A.Sort();
    }
}

2 个答案:

答案 0 :(得分:5)

返回A.Sort不返回已排序的数组,它返回Sort命令的返回值。由于Sortvoid方法,因此它实际上不返回任何内容,因此返回错误消息。

因此,要返回已排序的数组,您需要在之后将其返回进行排序:

public class sortA : sortMethod
{
    public override List<int> Sort(List<int> A)
    {
        A.Sort();
        return A;
    }
}

答案 1 :(得分:2)

  

List<T>.Sort()方法对整个List中的元素进行排序   使用默认比较器。并且该方法的返回类型无效。

为什么会收到错误

在您的情况下,方法Sort期望返回类型为List<Int>的值,但是您返回A.Sort()实际上什么都不返回。这就是错误的原因。

你能做什么:

调用A.Sort()后,列表A被排序。现在您可以返回A。修改后的代码将是:

public override List<int> Sort(List<int> A)
{       
    A.Sort();
    return A;
}