Так как TBytes, TByteDynArray и Array of Bytes - это все динамические массивы байтов, могут ли типизированные переменные безопасно присваиваться друг другу? (Если у меня есть переменная TBytes, я могу просто прибегнуть к TByteDynArray при использовании метода, который определяет параметры как TByteDynArray и наоборот?)
Могут ли TBytes, TByteDynArray, Array of Bytes быть безопасно приписаны друг к другу?
Ответ 1
Такие приемы типа совершенно безопасны во всех реализациях Delphi, с которыми я когда-либо сталкивался.
Тем не менее, при интерпретации типов переинтерпретации, подобные этой проверке типов, всегда существует риск того, что будущие изменения исходного кода могут привести к серьезным ошибкам трассировки. Я всегда старался избегать кастинга, если это возможно. Например, самое простое, что вы можете сделать, это не использовать array of Byte
как тип кода и переключиться на TBytes
.
Если вы должны бросить, то сверните его в функцию, чтобы уменьшить риски, описанные выше.
function Bytes(const B: TByteDynArray): TBytes;
begin
Result := TBytes(B);
end;