Functions.ASortT 方法 (__ArrayBaseT, Int32, Int32, FuncT, T, Boolean) | |
对数组进行排序。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION ASort<T>(
aTarget AS ARRAY OF<T>,
nStart AS LONG,
nCount AS LONG,
cbOrder AS Func<T, T, LOGIC>
)
AS ARRAY OF<T>
public static __ArrayBase<T> ASort<T>(
__ArrayBase<T> aTarget,
int nStart,
int nCount,
Func<T, T, bool> cbOrder
)
查看代码参数
- aTarget
- 类型:__ArrayBaseT
要排序的数组。 - nStart
- 类型:Int32
起始元素。
默认值为1。
- nCount
- 类型:Int32
从 nStart 开始处理的元素数量。
默认为处理到数组末尾的所有元素。
- cbOrder
- 类型:FuncT, T, Boolean
用于确定排序顺序的代码块。
此参数用于将排序顺序更改为降序或字典顺序。
每次评估时,目标数组中的两个元素都会作为参数传递。
如果元素按排序顺序排列,代码块返回 TRUE。请参见下面的示例。
默认排序顺序为升序:
低值元素排在数组开头(第一个元素)。
高值元素排在数组末尾(最后一个元素)
类型参数
- T
- The type of the array elements
返回值
类型:
__ArrayBaseT
对
aTarget 的引用。
备注
ASort() 对数组的全部或部分进行排序。
数组可以包含混合类型的 USUAL。
可以排序的数据类型包括字符、日期、逻辑和数值。
字符串按 ASCII 顺序排序;逻辑值排序时 FALSE 为低值;日期值按时间顺序排序;数值按大小排序。
ASort() 不会直接对多维数组进行排序。
要对多维数组进行排序,您必须提供一个能正确处理子数组的代码块。
示例
此示例创建一个包含五个未排序元素的数组,先按升序排序,然后使用代码块按降序排序:
1aArray := {3, 5, 1, 2, 4}
2ASort(aArray)
3ASort(aArray,,, {|x, y| x >= y})
此示例对混合类型数组进行排序。
1LOCAL a := {"Z", "A", "one", 2, 1, "Three"}
2ASort(a)
此示例按升序对字符串数组进行排序,不区分大小写。
它通过使用在比较前将元素转换为大写的代码块来实现这一点:
1aArray := {"Fred", "Kate", "ALVIN", "friend"}
2ASort(aArray,,, {|x, y| Upper(x) <= Upper(y)})
此示例使用每个子数组的第二个元素对多维数组进行排序:
1aKids := {{"Mary", 14}, {"Joe", 23}, {"Art", 16}}
2aSortKids := ASort(aKids,,, {|x, y| x[2] <= y[2]})
注意:
如果确定不会有重复值,可以在代码块中使用 < 和 > 运算符;否则,
更适合使用 <= 和 >=,因为它们可以正确处理重复值。
参见