是否可以创建一个通用的受限方法?

3

我在我的代码中创建了以下简单的类,但是我收到了“TObject不是有效约束条件”的错误消息。

  TTest = class
    class function Test<T:TObject>(Dummy: integer): string;
  end;
  ... 
  class function TTeste.Teste<T>(Dummy: integer): string;
  begin
    Result := 'Compiled';
  end;

我做错了什么?这是可能的吗?(您可以包括在D2010之后的版本中提供的选项,因为我们将在接下来的两周内收到我们的XE2许可证。)

当搜索“Delphi通用约束”时,第一个结果就可以回答这个问题。 - CodesInChaos
几乎失眠的夜晚...我平时不是那么懒的...只是忘记要做了。真是可耻;-) - Fabricio Araujo
1个回答

8
尝试使用“class”约束条件:
TTest = class
  class function Test<T:class>(Dummy: integer): string;
end;

它可能不仅接受普通类,还可以接受带有该约束的接口(在C#中是这样的,在Delphi泛型中也模仿了C#泛型)。

这个答案是正确的。但是T:classT:TObject之间有什么语义上的区别呢?接口不被接受并会产生错误E2511 - ventiseis

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