在c#中尝试对数组进行排序时出现编译错误
本文关键字:排序 错误 编译 数组 | 更新日期: 2023-09-27 18:17:23
我正在用c#做作业,需要对数组进行排序。我可以使用
对整数数组进行排序Array.sort<int>(a, delegate(int x, int y) { return y-x;});
但是,如果我想从特定位置和特定长度执行
Array.sort<int>(a, 0, m, delegate(int x, int y) { return y-x;});
我得到编译错误:"Cannot convert anonymous method to type 'System.Collections.Generic. "因为它不是委托类型。我只用
就解决了这个问题。Array.sort<int>(a, 0, m);
和所有其他的东西都反过来做。为什么它会给我一个错误,如何改变它的工作?
Thanks for help
第一个示例调用的方法具有签名:
Array.Sort(int[] array, Comparison<int> comparison)
您正在使用的委托用于比较。没有具有索引、长度和比较的Array.Sort
重载。
您正在尝试调用的方法具有以下签名:
Array.Sort(int[] array, int index, int length, IComparer<int> comparer)
注释IComparer,而不是Comparison
如果您需要自定义排序。你需要创建一个类来实现IComparer,因为这是第四个参数所期望的。
或者,尝试.OrderByDescending
扩展方法,当您包含using System.Linq;
如果您不需要自定义比较器,则传递null作为第四个参数。
如果你这样做,你需要一个特别从IComparer继承的参数——你不能只使用一个匿名委托。
http://msdn.microsoft.com/en-us/library/system.collections.icomparer.aspx