Dela via


Sammanfattning av datatyp (Visual Basic)

Följande tabell visar Visual Basic datatyper, deras stöd för vanliga språkkörningstyper, deras nominella lagringsallokering och deras värdeintervall.

Visual Basic typ Struktur för vanliga språkkörningstyper Nominell lagringsallokering Värdeintervall
Boolesk Boolean Beror på implementeringsplattformen True eller False
Byte Byte 1 byte 0 till 255 (osignerad)
Tecken (enskilt tecken) Char 2 byte 0 till 65535 (osignerad)
Datum DateTime 8 byte 0:00:00 (midnatt) den 1 januari 0001 till 23:59:59 den 31 december 9999
Decimal Decimal 16 byte 0 till +/-79 228 162 514 264 337 593 543 950 335 (+/-7,9...E+28) utan decimaltecken; 0 till +/-7.9228162514264337593543950335 med 28 platser till höger om decimaltecknet;

minsta nonzero-tal är +/-0.0000000000000000000001 (+/-1E-28)
Dubbel (flyttal med dubbel precision) Double 8 byte -1.79769313486231570E+308 till -4.94065645841246544E-324 för negativa värden;

4.94065645841246544E-324 till 1.79769313486231570E+308 för positiva värden
Integer Int32 4 byte -2 147 483 648 till 2 147 483 647 (signerad)
Långt (långt heltal) Int64 8 byte -9 223 372 036 854 775 808 till 9 223 372 036 854 775 807 (9,2...E+18 ) (signerad)
Objekt Object (klass) 4 byte på 32-bitars plattform

8 byte på 64-bitars plattform
Alla typer kan lagras i en variabel av typen Object
SByte SByte 1 byte -128 till 127 (signerad)
Kort (kort heltal) Int16 2 byte -32 768 till 32 767 (signerad)
Enkel (flyttal med enkel precision) Single 4 byte -3.4028235E+38 till -1.401298E-45 för negativa värden;

1.401298E-45 till 3.4028235E+38 för positiva värden
Sträng (variabellängd) String (klass) Beror på implementeringsplattformen 0 till cirka 2 miljarder Unicode-tecken
UInteger UInt32 4 byte 0 till 4 294 967 295 (osignerade)
ULong UInt64 8 byte 0 till 18 446 744 073 709 551 615 (1,8...E+19 ) (osignerad)
Användardefinierad (struktur) (ärver från ValueType) Beror på implementeringsplattformen Varje medlem i strukturen har ett intervall som bestäms av dess datatyp och oberoende av intervallen för de andra medlemmarna
UShort UInt16 2 byte 0 till 65 535 (osignerad)

I vetenskaplig notation refererar "E" till en kraft på 10. 3.56E+2 betyder alltså 3,56 x 102 eller 356 och 3,56E-2 betyder 3,56 / 102 eller 0,0356.

Anteckning

För strängar som innehåller text använder du StrConv funktionen för att konvertera från ett textformat till ett annat.

Förutom att ange en datatyp i en deklarationssats kan du framtvinga datatypen för vissa programmeringselement med hjälp av ett typtecken. Se Skriv tecken.

Minnesförbrukning

När du deklarerar en elementär datatyp är det inte säkert att anta att minnesförbrukningen är densamma som dess nominella lagringsallokering. Detta beror på följande överväganden:

  • Storage tilldelning. Den vanliga språkkörningen kan tilldela lagring baserat på de aktuella egenskaperna för den plattform som programmet körs på. Om minnet är nästan fullt kan de deklarerade elementen packas så nära varandra som möjligt. I andra fall kan det justera deras minnesadresser till naturliga maskinvarugränser för att optimera prestanda.

  • Plattformsbredd. Storage tilldelning på en 64-bitarsplattform skiljer sig från tilldelning på en 32-bitarsplattform.

Sammansatta datatyper

Samma överväganden gäller för varje medlem av en sammansatt datatyp, till exempel en struktur eller en matris. Du kan inte förlita dig på att bara lägga ihop de nominella lagringsallokeringarna för typens medlemmar. Dessutom finns det andra överväganden, till exempel följande:

  • Overhead. Vissa sammansatta typer har ytterligare minneskrav. En matris använder till exempel extra minne för själva matrisen och även för varje dimension. På en 32-bitarsplattform är den här kostnaden för närvarande 12 byte plus 8 byte för varje dimension. På en 64-bitarsplattform fördubblas detta krav.

  • Storage layout. Du kan inte på ett säkert sätt anta att lagringsordningen i minnet är samma som din deklarationsordning. Du kan inte ens göra antaganden om bytejustering, till exempel en gräns på 2 byte eller 4 byte. Om du definierar en klass eller struktur och du behöver styra lagringslayouten för dess medlemmar kan du använda StructLayoutAttribute attributet för klassen eller strukturen.

Objektomkostnader

En Object hänvisning till en elementär eller sammansatt datatyp använder 4 byte utöver de data som finns i datatypen.

Se även