将动态数组类型分配给 TArray<T> 变量

Assign a dynamic array type to a TArray<T> variable

我正在尝试将动态数组类型分配给 TArray<string> 变量

type
  TMyStringArray = array of string;

function Test() : TMyStringArray;
begin
  ...
end;

...

var
  MyArray : TArray<string>;
begin
  MyArray := Test();
end;

在编译时,Delphi 说:

[dcc32 Error] Unit1.pas(39): E2010 Incompatible types: 'System.TArray' and 'TMyStringArray'

我只是通过使用类型转换来做到这一点,它似乎有效。

我很高兴知道我这样做会遇到一些问题

type
  TMyStringArray = array of string;

function Test() : TMyStringArray;
begin
  SetLength(Result, 2);
  Result[0] := 'Hello';
  Result[1] := 'World';
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  MyArray : TArray<string>;
  i : integer;
begin
  MyArray := TArray<string>(Test());

  i := 0;
  while(i < Length(MyArray)) do
  begin
    ShowMessage(MyArray[i]);
    Inc(i);
  end;
end;