在System.Generics.Collections
中,TArray
类型仅具有类功能。
例如:
class procedure Sort<T>(var Values: array of T); overload; static;
这意味着唯一接受的语法如下:
var
Arr : TArray<integer>;
begin
SetLength(Arr, 2);
Arr[0] := 5;
Arr[1] := 3;
TArray.Sort<integer>(Arr);
end;
我想定义一个对象的函数,以便使用以下语法对通用数组的值进行排序:
var
Arr : TArray<integer>;
begin
SetLength(Arr, 2);
Arr[0] := 5;
Arr[1] := 3;
Arr.Sort();
end;
您可以为非通用动态数组或完全专用的通用动态数组定义帮助器。例如,您可以编写:
type
TMyArray1 = array of Integer;
TMyArray2 = TArray<Integer>;
TMyArrayHelper1 = record helper for TMyArray1
end;
TMyArrayHelper2 = record helper for TMyArray2
end;
TMyArrayHelper3 = record helper for TArray<Integer>
end;
这使您可以将方法添加到此类数组的范围。
但是,您不能做的是写:
TMyArrayHelper<T> = record helper for TArray<T>
end;
编译器根本不支持通用帮助器。
我认为这些都不值得,只需致电:
TArray.Sort<T>()
直接。