2011-12-07 9 views

risposta

9

Tali tipi sono perfettamente al sicuro in tutte le implementazioni Delphi che io abbia mai incontrato.

Tuttavia, le tipizzazioni di reinterpretazione come questa rimuovono il controllo del tipo, c'è sempre il rischio che le future modifiche al codice sorgente possano causare errori di tracciatura difficile. Cercherei sempre di evitare il casting, se possibile. Ad esempio, la cosa più semplice che puoi fare è evitare l'uso di array of Byte come tipo nel tuo codice e passare a TBytes.

Se è necessario eseguire il cast, quindi avvolgerlo in una funzione per attenuare i rischi descritti sopra.

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

L'aggiunta di un 'in linea' dopo la dichiarazione della funzione renderà il codice ancora più" trasparente "rispetto al dominio asm generato. –

+1

@Arnaud Sì, avrebbe senso. Essenzialmente questa funzione non fa altro che sconfiggere il sistema di tipi e quindi è perfetto per inline! –

+0

Grazie per la modifica/punti aggiuntivi. –

Problemi correlati