加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 04:34:10 所属栏目:大数据 来源:网络整理
导读:我在D2010,我必须坚持到64位出来. 使用泛型,不支持指向泛型类型的指针,我发现它们确实非常有用.我在其他地方读过SO(2009年的帖子)巴里凯利爵士认为这可能会在未来发生变化.有谁知道XE是否支持这个? 如果没有,我真的希望他们进入XE2. 谢谢. 解决方法 在XE(20
我在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;

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读