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.