Poiché TBytes, TByteDynArray e Array of Bytes sono tutti array dinamici di byte, le variabili digitate possono essere tipizzate in modo sicuro l'una con l'altra? (Se ho una variabile di TBytes posso semplicemente typecast a TByteDynArray quando si utilizza un metodo che definisce parametri come TByteDynArray e viceversa?)TBytes, TByteDynArray, matrice di byte possono essere tipizzati in modo sicuro l'uno con l'altro?
11
A
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;
Problemi correlati
- 1. Quando una struct può essere sottoposta a hashing sicuro come una matrice di byte?
- 2. Come posso convertire TBytes in RawByteString?
- 3. Problema di compatibilità Delphi XE4 Indy tra TBytes e TidBytes
- 4. Elenca i rami git che possono essere eliminati in modo sicuro
- 5. Esistono linguaggi di script incorporati e tipizzati in modo statico?
- 6. Golang: array di byte dinamico non sicuro
- 7. modo corretto per copiare i dati da Tbyte a matrice di byte in Delphi
- 8. I thread possono essere creati in modo sicuro durante l'inizializzazione statica?
- 9. I file tmp/cache/assets possono essere cancellati in modo sicuro?
- 10. matrice Byte con imbottitura di byte null alla fine: come copiare in modo efficiente ai più piccoli array di byte
- 11. Convertire ctype byte matrice di byte
- 12. Qualcuno sa di linguaggi di scripting tipizzati in modo statico?
- 13. Le matrici condivise possono gestire le scritture concorrenti in modo sicuro in Julia?
- 14. Byte matrice serializzazione JSON.NET
- 15. Perché solo le funzioni di sicurezza del segnale asincrono possono essere chiamate dai gestori di segnale in modo sicuro?
- 16. Convertire la matrice di byte in decimale
- 17. I parametri `auto &&` possono essere inoltrati in modo perfetto?
- 18. Perché Integer e int possono essere utilizzati in modo intercambiabile?
- 19. Bit Iterate Java in matrice di byte
- 20. Come convertire System.Drawing.Image in matrice di byte?
- 21. Conversione matrice byte Java Edizione
- 22. sottoinsiemi tipizzati di enumerazioni
- 23. Come convertire una matrice di stringhe in una matrice di byte? (java)
- 24. Funzione restituisce matrice BYTE
- 25. Come inizializzare la matrice di byte di 100 byte in java con tutti gli 0
- 26. Stringa molto grande nella matrice di byte
- 27. Come posso convertire in modo sicuro un array di byte in una stringa e tornare indietro?
- 28. quali database possono essere utilizzati con java?
- 29. Quali caratteristiche di Scala non possono essere tradotte in Java?
- 30. In che modo le grandi strutture possono essere passate in base al valore in modo efficiente?
L'aggiunta di un 'in linea' dopo la dichiarazione della funzione renderà il codice ancora più" trasparente "rispetto al dominio asm generato. –
@Arnaud Sì, avrebbe senso. Essenzialmente questa funzione non fa altro che sconfiggere il sistema di tipi e quindi è perfetto per inline! –
Grazie per la modifica/punti aggiuntivi. –