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

delphi – 用于记录类型(或数组)的前向声明

发布时间:2020-12-15 04:31:53 所属栏目:大数据 来源:网络整理
导读:我想在XE5中做到这一点: type TMyRec = record // fields class function GetList: TMyRecArr; static; end; TMyRecArr = array of TMyRec; 我已经看到了“Forward declarations for record types”和“how to do a typed forward declaration?”,但是它们
我想在XE5中做到这一点:
type
  TMyRec = record
    // fields
    class function GetList: TMyRecArr; static;
  end;

  TMyRecArr = array of TMyRec;

我已经看到了“Forward declarations for record types”和“how to do a typed forward declaration?”,但是它们似乎并不相关,因为我的问题没有将记录作为参数传递.

解决方法

您不能使用forward声明来声明记录类型或数组类型.但不要害怕您可以使用通用动态数组TArray< T>.
type
  TMyRec = record
    class function GetList: TArray<TMyRec>; static;
  end;

这实际上比根据您的问题的代码声明TMyRecArr更好.这是因为通用的TArray< T>具有比传统动态数组类型更灵活的类型标识.您可以使用TArray< T>在库中定义的泛型类型是独立的,不知道你的代码.

现在,您可以声明类型如下:

type
  TMyRec = record
    type TMyRecArray = array of TMyRec;
    class function GetList: TMyRecArray; static;
  end;

然后你的数组类型是TMyRec.TMyRecArray.但我敦促你不要这样做.您将拥有只能与您一起使用代码的类型,不能与第三方代码一起使用.

总之,TArray< T>是你的朋友.

(编辑:李大同)

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

    推荐文章
      热点阅读