Могут ли TBytes, TByteDynArray, Array of Bytes быть безопасно настроены друг на друга? - PullRequest
12 голосов
/ 07 декабря 2011

Поскольку TBytes, TByteDynArray и array of Bytes являются динамическими массивами байтов, могут ли типизированные переменные быть безопасно типизированы друг к другу? (Если у меня есть переменная TBytes, могу ли я просто ввести тип TByteDynArray при использовании метода, который определяет параметры как TByteDynArray и наоборот?)

1 Ответ

10 голосов
/ 07 декабря 2011

Такие типы типов абсолютно безопасны во всех реализациях Delphi, с которыми я когда-либо сталкивался.

Однако при повторных интерпретациях типов, подобных этой проверке типа удаления, всегда существует риск того, что будущие изменения исходного кода могут привестисложно отследить ошибки.Я всегда стараюсь избегать кастинга, если это возможно.Например, самое простое, что вы можете сделать, это избегать использования array of Byte в качестве типа в вашем коде и переключаться на TBytes.

Если вам необходимо привести приведение, оберните его в функцию, чтобы смягчитьриски, которые я описал выше.

function Bytes(const B: TByteDynArray): TBytes;
begin
  Result := TBytes(B);
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...