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

前端之家收集整理的这篇文章主要介绍了delphi – 用于记录类型(或数组)的前向声明前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在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>是你的朋友.

猜你在找的Delphi相关文章