Riepilogo dei tipi di dati (Visual Basic)Data Type Summary (Visual Basic)

La tabella seguente illustra i tipi di dati Visual Basic, i tipi di Common Language Runtime di supporto, l'allocazione nominale dello spazio di archiviazione e i relativi intervalli di valori.The following table shows the Visual Basic data types, their supporting common language runtime types, their nominal storage allocation, and their value ranges.

Tipo di Visual BasicVisual Basic type Struttura del tipo Common Language RuntimeCommon language runtime type structure Allocazione di spazio di archiviazione nominaleNominal storage allocation Intervallo di valoriValue range
BooleanBoolean Boolean Dipende dalla piattaforma di implementazioneDepends on implementing platform True o FalseTrue or False
ByteByte Byte 1 byte1 byte da 0 a 255 (senza segno)0 through 255 (unsigned)
Carattere (carattere singolo)Char (single character) Char 2 byte2 bytes da 0 a 65535 (senza segno)0 through 65535 (unsigned)
DateDate DateTime 8 byte8 bytes 0:00:00 (mezzanotte) il 1 ° gennaio 0001-11:59:59 PM il 31 dicembre 99990:00:00 (midnight) on January 1, 0001 through 11:59:59 PM on December 31, 9999
DecimalDecimal Decimal 16 byte16 bytes da 0 a +/-79.228.162.514.264.337.593.543.950.335 (+/-7.9...E + 28) senza virgola decimale; da 0 a +/-7.9228162514264337593543950335 con 28 posizioni a destra del separatore decimale;0 through +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9...E+28) with no decimal point; 0 through +/-7.9228162514264337593543950335 with 28 places to the right of the decimal;

il numero più piccolo diverso da zero è +/-0,0000000000000000000000000001 (+/-1E-28) smallest nonzero number is +/-0.0000000000000000000000000001 (+/-1E-28)
Valore Double (virgola mobile a precisione doppia)Double (double-precision floating-point) Double 8 byte8 bytes -1.79769313486231570 e + 308 a-4.94065645841246544 E-324 per i valori negativi;-1.79769313486231570E+308 through -4.94065645841246544E-324 for negative values;

4.94065645841246544 e-324 tramite 1.79769313486231570 E + 308 per i valori positivi4.94065645841246544E-324 through 1.79769313486231570E+308 for positive values
IntegerInteger Int32 4 byte4 bytes da-2.147.483.648 a 2.147.483.647 (con segno)-2,147,483,648 through 2,147,483,647 (signed)
Tempo (Long Integer)Long (long integer) Int64 8 byte8 bytes da-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (9.2... E + 18 ) (con segno)-9,223,372,036,854,775,808 through 9,223,372,036,854,775,807 (9.2...E+18 ) (signed)
OggettoObject ObjectclasseObject (class) 4 byte sulla piattaforma a 32 bit4 bytes on 32-bit platform

8 byte sulla piattaforma a 64 bit8 bytes on 64-bit platform
Qualsiasi tipo può essere archiviato in una variabile di tipoObjectAny type can be stored in a variable of type Object
SByteSByte SByte 1 byte1 byte da-128 a 127 (con segno)-128 through 127 (signed)
Breve (short Integer)Short (short integer) Int16 2 byte2 bytes da-32.768 a 32.767 (con segno)-32,768 through 32,767 (signed)
Singolo (virgola mobile a precisione singola)Single (single-precision floating-point) Single 4 byte4 bytes -3.4028235 e + 38-401298E E-45 per i valori negativi;-3.4028235E+38 through -1.401298E-45 for negative values;

401298E e-45 tramite 3.4028235 E + 38 per i valori positivi1.401298E-45 through 3.4028235E+38 for positive values
Stringa di (a lunghezza variabile)String (variable-length) StringclasseString (class) Dipende dalla piattaforma di implementazioneDepends on implementing platform da 0 a circa 2 miliardi caratteri Unicode0 to approximately 2 billion Unicode characters
UIntegerUInteger UInt32 4 byte4 bytes da 0 a 4.294.967.295 (senza segno)0 through 4,294,967,295 (unsigned)
ULongULong UInt64 8 byte8 bytes da 0 a 18.446.744.073.709.551.615 (1.8... E + 19 ) (senza segno)0 through 18,446,744,073,709,551,615 (1.8...E+19 ) (unsigned)
Definito dall'utente strutturaUser-Defined (structure) (eredita da ValueType)(inherits from ValueType) Dipende dalla piattaforma di implementazioneDepends on implementing platform Ogni membro della struttura ha un intervallo determinato dal tipo di dati e indipendente dagli intervalli degli altri membriEach member of the structure has a range determined by its data type and independent of the ranges of the other members
UShortUShort UInt16 2 byte2 bytes da 0 a 65.535 (senza segno)0 through 65,535 (unsigned)

Nella notazione scientifica"E" si riferisce a una potenza di 10. In scientific notation, "E" refers to a power of 10. Quindi 3.56 E + 2 significa 3,56 x 102 o 356 e 3.56 e-2 indica 3,56/102 o 0,0356.So 3.56E+2 signifies 3.56 x 102 or 356, and 3.56E-2 signifies 3.56 / 102 or 0.0356.

Nota

Per le stringhe contenenti testo, usare StrConv la funzione per convertire un formato di testo in un altro.For strings containing text, use the StrConv function to convert from one text format to another.

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.In addition to specifying a data type in a declaration statement, you can force the data type of some programming elements by using a type character. Vedere caratteri di tipo.See Type Characters.

Consumo di memoriaMemory Consumption

Quando si dichiara un tipo di dati Elementary, non è sicuro supporre che il consumo di memoria corrisponda a quello dell'allocazione nominale di archiviazione.When you declare an elementary data type, it is not safe to assume that its memory consumption is the same as its nominal storage allocation. Questo problema è dovuto alle considerazioni seguenti:This is due to the following considerations:

  • Assegnazione di archiviazione.Storage Assignment. Il Common Language Runtime può assegnare lo spazio di archiviazione in base alle caratteristiche correnti della piattaforma in cui è in esecuzione l'applicazione.The common language runtime can assign storage based on the current characteristics of the platform on which your application is executing. Se la memoria è quasi piena, potrebbe comprimere gli elementi dichiarati nel più vicino possibile.If memory is nearly full, it might pack your declared elements as closely together as possible. In altri casi, è possibile allineare gli indirizzi di memoria ai limiti hardware naturali per ottimizzare le prestazioni.In other cases it might align their memory addresses to natural hardware boundaries to optimize performance.

  • Larghezza della piattaforma.Platform Width. L'assegnazione di archiviazione in una piattaforma a 64 bit è diversa dall'assegnazione in una piattaforma a 32 bit.Storage assignment on a 64-bit platform is different from assignment on a 32-bit platform.

Tipi di dati compositiComposite Data Types

Le stesse considerazioni si applicano a ogni membro di un tipo di dati composito, ad esempio una struttura o una matrice.The same considerations apply to each member of a composite data type, such as a structure or an array. Non è possibile basarsi semplicemente sull'aggiunta delle allocazioni di archiviazione nominale dei membri del tipo.You cannot rely on simply adding together the nominal storage allocations of the type's members. Sono inoltre presenti altre considerazioni, ad esempio le seguenti:Furthermore, there are other considerations, such as the following:

  • Overhead.Overhead. Alcuni tipi compositi hanno requisiti di memoria aggiuntivi.Some composite types have additional memory requirements. Una matrice, ad esempio, utilizza memoria aggiuntiva per la matrice stessa, nonché per ogni dimensione.For example, an array uses extra memory for the array itself and also for each dimension. In una piattaforma a 32 bit, questo overhead è attualmente di 12 byte più 8 byte per ogni dimensione.On a 32-bit platform, this overhead is currently 12 bytes plus 8 bytes for each dimension. In una piattaforma a 64 bit questo requisito è raddoppiato.On a 64-bit platform this requirement is doubled.

  • Layout di archiviazione.Storage Layout. Non è possibile presupporre in modo sicuro che l'ordine di archiviazione in memoria corrisponda a quello dell'ordine di dichiarazione.You cannot safely assume that the order of storage in memory is the same as your order of declaration. Non è inoltre possibile creare presupposti sull'allineamento dei byte, ad esempio un limite di 2 o 4 byte.You cannot even make assumptions about byte alignment, such as a 2-byte or 4-byte boundary. Se si definisce una classe o una struttura ed è necessario controllare il layout di archiviazione dei relativi membri, è possibile applicare l' StructLayoutAttribute attributo alla classe o alla struttura.If you are defining a class or structure and you need to control the storage layout of its members, you can apply the StructLayoutAttribute attribute to the class or structure.

Overhead oggettoObject Overhead

Un Object riferimento a un tipo di dati elementare o composito utilizza 4 byte oltre ai dati contenuti nel tipo di dati.An Object referring to any elementary or composite data type uses 4 bytes in addition to the data contained in the data type.

Vedere ancheSee also