在变量声明中,类名后面的尖括号代表什么意思?

4

我已经使用Delphi编程一段时间了,但是在Stack Overflow上看到了一个问题中的一种语法,这让我不太理解。那个语法是:

var Dic: TDictionary<Integer,string>;

我从未见过<type, type>。它是什么意思?在什么时候和哪里可以使用?由于Google省略了像'<','>'这样的字符,所以我找不到任何信息。

2
虽然 Google 忽略大部分标点符号,但搜索 "Delphi TDictionary<Integer,string>" 会产生几个结果,这些结果可以让人了解该语法的情况。主要是因为 TDictionary 总是 包括尖括号,所以它们是否是搜索的一部分并不重要。 - Rob Kennedy
这与 C# 中的泛型具有相同的基本语法,并且与 C++ 中的模板类型非常相似。 - Warren P
2个回答

8

这是用于泛型的语法。泛型允许您定义通过类型参数化的类。

您可以在Delphi文档中阅读有关此内容的详细信息。您还可以在维基百科页面中找到有用的信息。它提供了有关泛型编程概念的更广泛概述。


@martin 此外,泛型直到 Delphi 2009 才被引入(至少对于本地 Delphi),因此如果您大部分时间都在旧版本的 Delphi 中度过,那就是为什么您没有遇到它们的原因。 - Kenneth Cochran

6

在许多编程语言中,它通常是一种映射或模板实例化方法。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;

你的例子定义了一个将整数映射为字符串的字典。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接