【发布时间】:2010-10-23 18:15:45
【问题描述】:
这是我 other question 的后续跟进。
当我第一次听说泛型时,是在 Delphi 2009 发布之前(他们首先介绍了泛型)。我知道在此之前它在 .Net 中得到了支持,但我还没有深入到那个领域。
阅读泛型时,我了解到它允许类有一个变量参数,并且你传递给它的任何值都会被类的所有代码替换。
根据以下声明,描述泛型的方式(或者至少我理解的泛型允许的方式)是这样的:
procedure TMyClass<T>.Init;
begin
FField := T.Create(nil);
end;
我认为它会起作用。我假设编译失败的地方如下:
begin
TMyClass<TComponent>.Create; //Works correctly
TMyClass<TObject>.Create; //Doesn't work, as even though it HAS a constructor, it has none that receive a single pointer parameter
TMyClass<string>.Create; //Doesn't work, not an object.
end;
现在,我很清楚我错了。所以,我现在想知道的是,是否有支持这种结构的技术/语言特性。也许是代码模板?其他编程语言中的泛型?还是别的什么?
【问题讨论】:
标签: delphi templates generics language-features