可以将TBytes,TByteDynArray,字节数组安全地相互映射吗?

时间:2011-12-07 18:53:25

标签: delphi casting

由于TBytesTByteDynArrayarray of Bytes都是动态字节数组,因此可以将类型变量安全地相互映射吗? (如果我有一个TBytes的变量,我可以在使用定义参数为TByteDynArray的方法时将其简单地转换为TByteDynArray,反之亦然?)

1 个答案:

答案 0 :(得分:10)

这种类型转换在我遇到的所有Delphi实现中都是完全安全的。

然而,像这样重新解释类型转换删除类型检查,总是存在未来对源代码的更改可能导致难以跟踪错误的风险。如果可能的话,我会尽量避免施法。例如,您可以做的最简单的事情是避免在代码中使用array of Byte作为类型并切换到TBytes

如果你必须施放,然后将其包装在一个函数中,以减轻我上面描述的风险。

function Bytes(const B: TByteDynArray): TBytes;
begin
  Result := TBytes(B);
end;