【问题标题】:Delphi property getter function using genericsDelphi 使用泛型的属性 getter 函数
【发布时间】:2023-03-08 19:17:01
【问题描述】:

如果有通用属性 getter/setter 来在每次访问时执行共同任务会很好。

该代码在 Delphi XE2 'E2008 Incompatible types' 中出现编译时错误。类似的代码在编译期间出现内部错误,但从未编译。我犯了错误还是编译器限制?

type TFoo = class
private
  function Get<T>: T;
public
  property Bar: Integer read Get<Integer>;
end;

function TFoo.Get<T>: T;
begin
  Result := 0;
end;

【问题讨论】:

  • 顺便说一句,泛型的实现在 XE2 中充满了错误。如果您想使用泛型,最好更新到具有更少泛型错误的更现代的 Delphi 版本。

标签: delphi generics properties delphi-xe2


【解决方案1】:

以下内容可以在 Delphi 语言中通用:

  • 类,例如TFooClass&lt;T&gt; = class
  • 记录,例如TFooRecord&lt;T&gt; = record
  • 接口,例如TFooInterface&lt;T&gt; = interface
  • 程序类型,例如TFooProc&lt;T&gt; = procedure
  • 方法,例如procedure FooMethod&lt;T&gt;()

属性本身不能是通用的,并且不能使用通用的 getter 或 setter 方法来实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多