Delphi 在变量声明中,类名后的尖括号是什么意思?

Delphi 在变量声明中,类名后的尖括号是什么意思?,delphi,syntax,Delphi,Syntax,我用Delphi编程已经有一段时间了,但我从来没有遇到过在这里的问题中发现的语法。有这样的语法: var Dic: TDictionary<Integer,string>; var-Dic:t字典; 我从未见过。这是什么意思?何时何地可以使用?我什么也没发现,因为Google省略了像“”这样的字符。这是泛型使用的语法。泛型允许您定义按类型参数化的类 你可以在报纸上读到所有关于它的内容。您也可能会发现该页面很有用。它提供了泛型编程概念的更广泛概述。在许多语言中,它通常是映射或模板实

我用Delphi编程已经有一段时间了,但我从来没有遇到过在这里的问题中发现的语法。有这样的语法:

var Dic: TDictionary<Integer,string>;
var-Dic:t字典;

我从未见过
。这是什么意思?何时何地可以使用?我什么也没发现,因为Google省略了像“”这样的字符。

这是泛型使用的语法。泛型允许您定义按类型参数化的类


你可以在报纸上读到所有关于它的内容。您也可能会发现该页面很有用。它提供了泛型编程概念的更广泛概述。

在许多语言中,它通常是映射或模板实例化,Delphi调用这些泛型,可以看到声明它们的示例:

类型
TPair=class//TKey和TValue是类型参数
FKey:TKey;
FValue:TValue;
函数GetValue:TValue;
结束;
函数TPair.GetValue:TValue;
开始
结果:=fv值;
结束;

您的特定示例所定义的是一个将整数映射到字符串的字典。

尽管谷歌省略了大多数标点符号,但搜索“Delphi TDictionary”会产生一些结果,让您了解该语法的情况。主要是因为TrGo字典总是包含角括号,所以它们是否是搜索的一部分并不重要。这与C语言中的泛型相同的基本语法,看起来与C++中的模板类型非常相似。Thanks@martin另外,泛型直到Delphi2009年才被引入(至少对于原生Delphi是这样),所以如果你大部分时间都在旧版本的Delphi上,那就是你没有遇到泛型的原因。
type
  TPair<Tkey,TValue> = class   // TKey and TValue are type parameters
    FKey: TKey;
    FValue: TValue;
    function GetValue: TValue;
  end;

function TPair<TKey,TValue>.GetValue: TValue;
begin
  Result := FValue;
end;