为什么当将动态放置在记录或类中时,它会array of string
变得与其他动态不兼容?array of string
type
TRec = record
ArrayInRecord: array of string;
end;
var
Rec: TRec;
SimpleArray1, SimpleArray2, CombinedArrayOK, CombinedArrayFail: array of string;
begin
SimpleArray1 := ['1', '2'];
SimpleArray2 := ['3', '4'];
CombinedArrayOK := SimpleArray1 + SimpleArray2; // No problem here
Rec.ArrayInRecord := ['5', '6'];
CombinedArrayFail := SimpleArray1 + Rec.ArrayInRecord; // E2008 Incompatible types
end;
实际上,这与课程或记录的存在没有特别的关系。
事实上,即使这样也失败了:
问题很简单,每个类型都
array of string
在类型系统中引入了一种新类型。传统的解决办法是引入自己的数组类型:
那么你将需要一直使用这种类型。
但在现代版本的 Delphi 中,您不需要这样做。相反,只需使用
TArray<string>
已在 RTL 中定义的内容:(引入自定义类型或使用
TArray<string>
也是相关常见“如何从函数返回数组?”问题的解决方案。)