【问题标题】:Is possible to create an generic constrained method?是否可以创建一个通用的约束方法?
【发布时间】:2012-01-11 17:01:26
【问题描述】:

我在我的代码中创建了以下简单类,我收到 “TObject is not a valid constraint” 错误消息。

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

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

【问题讨论】:

  • 搜索“通用约束 delphi”时的第一次点击回答了这个问题。
  • 几乎不眠之夜......我通常不那么懒惰......我只是不记得这样做。真丢脸 ;-)

标签: delphi generics delphi-2010 constraints delphi-xe2


【解决方案1】:

尝试class 约束:

TTest = class
  class function Test<T:class>(Dummy: integer): string;
end;

它可能不仅接受普通类,而且还与该约束进行接口(在 C# 中是这样,Delphi 泛型模仿 C# 泛型)。

【讨论】:

  • 这个答案是正确的。但是T:classT:TObject 之间的语义差异在哪里?接口不被接受并产生错误E2511
猜你喜欢
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多