编译错误创建TPair TArray

Edi*_*ičs 2 arrays delphi generics delphi-xe2

uses
  Generics.Collections, types, rtti, System.Generics.Collections;

procedure GimmePairArray(const APairArray: TArray<TPair<string, TValue>>);
begin

end;

procedure TForm2.FormCreate(Sender: TObject);
var
  _PairArray: TArray<TPair<string, TValue>>;
begin
  _PairArray := TArray <TPair<string, TValue>>.Create(TPair<'"reset changes"', TValue.From<Boolean>(True)>);
  GimmePairArray(_PairArray);
end;
Run Code Online (Sandbox Code Playgroud)

导致编译错误: [DCC错误] Unit2.pas(38):E2003未声明的标识符:'TPair' 我做错了什么?TPair在System.Generics.Collections中声明,我在我的Uses中使用它.

Dav*_*nan 6

首先,编译器说不TPair存在.尽管如此,否则编译器是正确的.TPair<K, V>存在,但不存在TPair.

编译器确实指出了问题所在.如果您指出程序行无法编译会很有帮助,但很明显这个代码是问题所在:

TPair<'"reset changes"', TValue.From<Boolean>(True)>
Run Code Online (Sandbox Code Playgroud)

这是语法错误.你的意思是:

TPair<string, TValue>.Create('"reset changes"', TValue.From<Boolean>(True))
Run Code Online (Sandbox Code Playgroud)

编译器会查看您的代码并尝试确定它是否<是泛型类型表达式的一部分.因为右边的表达式<不是一个类型,所以结论是let不是,并且你的<是小于比较运算符.当然,TPair它说不存在.它没有,如顶部所述.