Arrays 是TArray<;T>;。在某处创建文档?

Arrays 是TArray<;T>;。在某处创建文档?,arrays,delphi,generics,Arrays,Delphi,Generics,我偶然发现这样的构造实际上编译并产生了所需的结果: var Arr: TArray<Integer>; begin Arr := TArray<Integer>.Create(100, 101, 102); end; var Arr:TArray; 开始 Arr:=TArray.Create(100101102); 结束; 我只在Delphi XE中测试了它,但它也可以在旧版本中使用。这是在什么地方记录的吗?它记录在中。它是以下内容的通用版本,最早可追溯到De

我偶然发现这样的构造实际上编译并产生了所需的结果:

var
  Arr: TArray<Integer>;
begin
  Arr := TArray<Integer>.Create(100, 101, 102);
end;
var
Arr:TArray;
开始
Arr:=TArray.Create(100101102);
结束;

我只在Delphi XE中测试了它,但它也可以在旧版本中使用。这是在什么地方记录的吗?

它记录在中。

它是以下内容的通用版本,最早可追溯到Delphi 2007:

type
  TIntArray = array of Integer;

var
  MyIntArray: TIntArray;
begin
  MyIntArray := TIntArray.Create(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
  ...
end;

它最终成为了一种解决方案,可以在不知道数组大小的情况下初始化数组。

它在Delphi 2010中也能正常工作,似乎是一种编译器魔法。说TArray来自于
泛型.Collections
,但它的工作原理不包括uses子句;
Generics.Collections
中的源代码未引用任何类型的构造函数。
TArray
System.pas
中声明为
array of
Generics.Collection
声明了
TArray
,它提供了一些用于搜索和排序的泛型类方法。如果没有对开放数组的支持,它将变得相当残废。请注意,Delphi 2007 one在.NET版本中支持泛型。在de Win32版本中,您必须获得Delphi 2009。@Johan:我从来没有说过任何关于泛型和D2007的内容。我说OP的代码片段是我发布的代码的通用版本,在D2007中有效。:)你在答案中拼错了泛型,让我措手不及。-)虽然这在当时可能是真的,但现在不是了(该死的维基!)@jep不,它今天还在:为动态数组分配内存的另一种方法是调用数组构造函数啊,好吧,这就是你所指的。我以为你说的不仅仅是一个简单的例子和解释。我想这是文档,只是最简单的一种,实际上没有比问题中所说的更进一步。不过,这很公平,因为它在技术上是“记录在案的”。