我一直在Delphi中编程一段时间,但是我从来没有碰到过在SO上的问题中找到的语法。有这样的语法:在变量声明中,类名后的尖括号是什么意思?
var Dic: TDictionary<Integer,string>;
我从来没有见过的<type, type>
。这是什么意思?何时何地可以使用?我什么也没找到,因为谷歌省略了字符'<','>'。
我一直在Delphi中编程一段时间,但是我从来没有碰到过在SO上的问题中找到的语法。有这样的语法:在变量声明中,类名后的尖括号是什么意思?
var Dic: TDictionary<Integer,string>;
我从来没有见过的<type, type>
。这是什么意思?何时何地可以使用?我什么也没找到,因为谷歌省略了字符'<','>'。
这是用于泛型的语法。泛型允许您按类型定义参数为的类别。
您可以在Delphi documentation中阅读关于它的全部内容。您也可以找到有用的Wikipedia页面。它给出了泛型编程概念的更广泛的概述。
@martin此外,泛型直到德尔福2009年才推出(至少对于原生Delphi),所以如果你花费大部分时间在Delphi的旧版本中,那就是为什么你没有遇到它们。 – 2012-03-22 14:33:04
在许多语言中,它通常是一个映射,或模板实例,德尔福调用这些仿制药,并宣布他们的例子可以看出here:
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;
你的具体的例子是定义为一个字典,将整数映射到字符串。
尽管Google忽略了大部分的标点符号,但是搜索“Delphi TDictionary”会得到几个结果,可以让我们了解该语法正在发生什么。主要是因为TDictionary * always *包含尖括号,因此无论它们是否是搜索的一部分都无关紧要。 –
2012-03-21 12:49:35
这与C#中的泛型相同,基本语法看起来与C++中的模板类型非常相似。 – 2012-03-21 13:01:53
@RobKennedy不知道。谢谢 – 2012-03-21 14:51:53