Riepilogo dei tipi di dati (Visual Basic)

Nella tabella seguente vengono illustrati i tipi di dati Visual Basic, i tipi di Common Language Runtime, l'allocazione di archiviazione nominale e gli intervalli di valori.

Visual Basic tipo Struttura dei tipi di Common Language Runtime Allocazione di archiviazione nominale Intervallo di valori
Boolean 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)
Data DateTime 8 byte 0:00:00 (mezzanotte) il 1° gennaio 0001 alle 11:59:59 il 31 dicembre 9999
Decimale Decimal 16 byte da +/a 79,228,162,514,264,337,593,543,950,335 (+/-7.9...E+28) senza decimali; 0 fino a +/-7.9228162514264337593543950335 con 28 posizioni a destra del decimale;

numero diverso da zero più piccolo è +/-0.000000000000000000000000001 (+/-1E-28)
Doppia (a virgola mobile a precisione doppia) Double 8 byte -1.79769313486231570E+308 fino a -4.94065645841246544E-324 per i valori negativi;

4.94065645841246544E-324 a 1.79769313486231570E+308 per valori positivi
Integer Int32 4 byte -2.147.483.648 fino a 2.147.483.647 (firmato)
Long (intero lungo) Int64 8 byte -9.223.372.036.854.775.808 fino a 9.223.372.036.854.775.807 (9.2...E+18 ) (firmato)
Object 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 -128 fino a 127 (firmato)
Breve (intero breve) Int16 2 byte -32.768 fino a 32.767 (firmato)
Singolo (a precisione singola a virgola mobile) Single 4 byte -3.4028235E+38 fino a -1.401298E-45 per i valori negativi;

1.401298E-45 fino 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.

Nota

Per le stringhe contenenti testo, usare la StrConv funzione per convertire 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 Tipi di caratteri.

Consumo di memoria

Quando si dichiara un tipo di dati elementare, non è sicuro presupporre che il consumo di memoria sia uguale all'allocazione di archiviazione nominale. Ciò è dovuto alle considerazioni seguenti:

  • Archiviazione assegnazione. 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 raggruppare gli elementi dichiarati il più possibile. In altri casi potrebbe allineare gli indirizzi di memoria ai limiti hardware naturali per ottimizzare le prestazioni.

  • Larghezza piattaforma. Archiviazione'assegnazione 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 delle allocazioni di archiviazione nominale dei membri del tipo. Inoltre, esistono altre considerazioni, ad esempio quanto segue:

  • 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 sovraccarico è attualmente pari a 12 byte e 8 byte per ogni dimensione. In una piattaforma a 64 bit questo requisito viene raddoppiato.

  • Archiviazione Layout. Non è possibile presupporre in modo sicuro che l'ordine di archiviazione in memoria sia uguale all'ordine di dichiarazione. Non è nemmeno possibile fare ipotesi sull'allineamento di byte, ad esempio un limite di 2 byte o 4 byte. Se si definisce una classe o una struttura e è necessario controllare il layout di archiviazione dei relativi membri, è possibile applicare l'attributo StructLayoutAttribute alla classe o alla struttura.

Sovraccarico dell'oggetto

Un Object riferimento a qualsiasi tipo di dati elementare o composito usa 4 byte oltre ai dati contenuti nel tipo di dati.

Vedi anche