Condividi tramite


Riepilogo dei tipi di dati (Visual Basic)

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.

Vedere anche