是否支持Delphi XE中的泛型类型?

前端之家收集整理的这篇文章主要介绍了是否支持Delphi XE中的泛型类型?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在D2010,我必须坚持到64位出来.

使用泛型,不支持指向泛型类型的指针,我发现它们确实非常有用.我在其他地方读过SO(2009年的帖子)巴里凯利爵士认为这可能会在未来发生变化.有谁知道XE是否支持这个?

如果没有,我真的希望他们进入XE2.

谢谢.

解决方法

在XE(2011):

这有效:

type
  TTest1<T> = record
    FX : T;
  end;

  TTest2<T> = array of T;

这不起作用:

type
  TTest3<T> = ^TTest1<T>;
  TTest4<T> = ^TTest2<T>;
  TTest<T> = ^T;

因此,指向泛型的指针尚不可能.

但是你可以做到以下几点:

type
  TMyClass = class
  public
    class function GetAddr<T>(const AItem: T): Pointer;
    class function GetP<T>(const APtr: Pointer): T;
  end;

class function TMyClass.GetAddr<T>(const AItem: T): Pointer;
begin
  Result := @AItem;
end;

class function TMyClass.GetP<T>(const APtr: Pointer): T;
begin
  Result := T(APtr^);
end;

您不能拥有泛型函数,但可以使用泛型方法.

因此,您可以使用泛型指针,但请记住,使用这种脏技术,您没有类型安全性.

原文链接:https://www.f2er.com/delphi/239361.html

猜你在找的Delphi相关文章