Generics 对象Pascal中的泛型:类型相等

Generics 对象Pascal中的泛型:类型相等,generics,pascal,freepascal,Generics,Pascal,Freepascal,我正在尝试学习Object Pascal(可能是为了业余项目),我发现Object Pascal(FreePascal)支持{$mode objfpc}中的泛型。它们看起来像C#泛型,但似乎有区别。当我试图声明变量时: 使用Fgl; ... SomeVariable:TFPSList; 我有一个错误告诉我fgl单元中的意外“,TFPSList不是泛型类型,它是一个普通类,所以不能专门化它, 使用TFPGList,您的语法也是错误的,在{$mode objfpc}中,您需要使用specializ

我正在尝试学习Object Pascal(可能是为了业余项目),我发现Object Pascal(FreePascal)支持
{$mode objfpc}
中的泛型。它们看起来像C#泛型,但似乎有区别。当我试图声明变量时:

使用Fgl;
...
SomeVariable:TFPSList;

我有一个错误告诉我fgl单元中的意外“,TFPSList不是泛型类型,它是一个普通类,所以不能专门化它, 使用TFPGList,您的语法也是错误的,在{$mode objfpc}中,您需要使用specialize关键字作为泛型,正确的语法是:

program Project1;

     {$mode objfpc}
    uses Classes,sysutils,fgl;
    type
    SomeType=specialize TFPGList<String>;
     var
       SomeVariable:SomeType;
    begin
      SomeVariable:=SomeType.Create;
      SomeVariable.Add('some string');
    end.
程序项目1;
{$mode objfpc}
使用类、sysutils、fgl;
类型
SomeType=专门化TFPGList;
变量
SomeVariable:SomeType;
开始
SomeVariable:=SomeType.Create;
添加('some string');
结束。

free pascal在Delphi模式下也是通用的{$mode Delphi}具有不同的语法,更多信息请参见此处

尝试使用
TFPGList
。正如所言,
TFPSList
是一个基类,不打算直接使用(注意,我也没有使用,我只是在谷歌上搜索了“TFPGList”),有了这些文档,应该可以很快消除这些误解