Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La tabella seguente illustra i tipi di dati di Visual Basic, i tipi common language runtime di supporto, l'allocazione di archiviazione nominale e i relativi intervalli di valori.
| Tipo Visual Basic | Struttura dei tipi common language runtime | Allocazione dello spazio di archiviazione nominale | Intervallo di valori |
|---|---|---|---|
| Booleano | Boolean | Dipende dall'implementazione della piattaforma |
True o False |
| Byte | Byte | 1 byte | da 0 a 255 (senza segno) |
| Char (carattere singolo) | Char | 2 byte | da 0 a 65535 (senza segno) |
| Date | DateTime | 8 byte | Dalle 0:00:00 (mezzanotte) il 1° gennaio 0001 alle 11:59:59 il 31 dicembre 9999 |
| Decimale | Decimal | 16 byte | da 0 a +/-79,228,162,514,264,337.593.543.950.335 (+/-7.9...E+28) † senza separatore decimale; da 0 a +/-7.922816251426437593543950335 con 28 posizioni a destra del decimale; il numero diverso da zero più piccolo è +/-0.000000000000000000000000001 (+/-1E-28) † |
| Double (a virgola mobile a precisione doppia) | Double | 8 byte | -1.79769313486231570E+308 fino a -4.94065645841246544E-324 † per i valori negativi; Da 4.94065645841246544E-324 da 1.79769313486231570E+308 † per i valori positivi |
| Intero | Int32 | 4 byte | Da -2.147.483.648 a 2.147.483.647 (firmato) |
| Long (long integer) | Int64 | 8 byte | -9.223.372.036.854.775.808 fino a 9.223.372.036.854.775.807 (9,2...E+18 †) (firmato) |
| oggetto | Object (classe) | 4 byte sulla piattaforma a 32 bit 8 byte sulla piattaforma a 64 bit |
Qualsiasi tipo può essere archiviato in una variabile di tipo Object |
| SByte | SByte | 1 byte | Da -128 a 127 (firmato) |
| Short (short integer) | Int16 | 2 byte | Da -32.768 a 32.767 (firmato) |
| Singolo (a precisione singola a virgola mobile) | Single | 4 byte | da -3.4028235E+38 a -1.401298E-45 † per i valori negativi; Da 1.401298E-45 a 3.4028235E+38 † per i valori positivi |
| Stringa (lunghezza variabile) | String (classe) | Dipende dall'implementazione della piattaforma | Da 0 a circa 2 miliardi di caratteri Unicode |
| UInteger | UInt32 | 4 byte | da 0 a 4.294.967.295 (senza segno) |
| ULong | UInt64 | 8 byte | da 0 a 18.446.744.073.709.551.615 (1,8...E+19 †) (senza segno) |
| Definito dall'utente (struttura) | (eredita da ValueType) | Dipende dall'implementazione della piattaforma | Ogni membro della struttura ha un intervallo determinato dal tipo di dati e indipendentemente dagli intervalli degli altri membri |
| UShort | UInt16 | 2 byte | da 0 a 65.535 (senza segno) |
† Nella notazione scientifica, "E" si riferisce a un potere di 10. Quindi 3.56E+2 indica 3.56 x 102 o 356 e 3.56E-2 indica 3.56 / 102 o 0.0356.
Annotazioni
Per le stringhe contenenti testo, usare la funzione per eseguire la StrConv conversione da un formato di testo a un altro.
Oltre a specificare un tipo di dati in un'istruzione di dichiarazione, è possibile forzare il tipo di dati di alcuni elementi di programmazione usando un carattere di tipo . Vedere Caratteri di tipo.
Consumo di memoria
Quando si dichiara un tipo di dati elementare, non è sicuro presupporre che il consumo di memoria corrisponda all'allocazione di archiviazione nominale. Ciò è dovuto alle considerazioni seguenti:
Assegnazione archiviazione. Common Language Runtime può assegnare l'archiviazione in base alle caratteristiche correnti della piattaforma in cui è in esecuzione l'applicazione. Se la memoria è quasi piena, potrebbe comprimere gli elementi dichiarati il più possibile insieme. In altri casi potrebbe allineare gli indirizzi di memoria ai limiti hardware naturali per ottimizzare le prestazioni.
Larghezza piattaforma. L'assegnazione di archiviazione in una piattaforma a 64 bit è diversa dall'assegnazione in una piattaforma a 32 bit.
Tipi di dati compositi
Le stesse considerazioni si applicano a ogni membro di un tipo di dati composito, ad esempio una struttura o una matrice. Non è possibile basarsi semplicemente sull'aggiunta di allocazioni di archiviazione nominale dei membri del tipo. Inoltre, esistono altre considerazioni, ad esempio le seguenti:
In cielo. Alcuni tipi compositi hanno requisiti di memoria aggiuntivi. Ad esempio, una matrice usa memoria aggiuntiva per la matrice stessa e anche per ogni dimensione. In una piattaforma a 32 bit, questo overhead è attualmente di 12 byte più 8 byte per ogni dimensione. In una piattaforma a 64 bit questo requisito viene raddoppiato.
Layout di archiviazione. Non è possibile presupporre in modo sicuro che l'ordine di archiviazione in memoria corrisponda all'ordine di dichiarazione. Non è nemmeno possibile fare ipotesi sull'allineamento dei byte, ad esempio un limite di 2 byte o 4 byte. Se si definisce una classe o una struttura ed è necessario controllare il layout di archiviazione dei relativi membri, è possibile applicare l'attributo StructLayoutAttribute alla classe o alla struttura.
Overhead dell'oggetto
Un Object riferimento a qualsiasi tipo di dati elementare o composito utilizza 4 byte oltre ai dati contenuti nel tipo di dati.