Samenvatting van gegevenstype (Visual Basic)

In de volgende tabel ziet u de Visual Basic gegevenstypen, de ondersteunde runtimetypen voor de algemene taal, de nominale opslagtoewijzing en de waardebereiken.

Visual Basic type Algemene structuur van runtime-type taal Nominale opslagtoewijzing Waardebereik
Booleaans Boolean Afhankelijk van het implementeren van het platform True of False
Byte Byte 1 byte 0 tot en met 255 (niet ondertekend)
Teken (enkel teken) Char 2 bytes 0 tot en met 65535 (niet ondertekend)
Datum DateTime 8 bytes 0:00:00 (middernacht) op 1 januari 0001 tot 11:59:59 uur op 31 december 9999
Decimaal Decimal 16 bytes 0 tot en met +/-79.228.162.514.264.337.593.543.950.335 (+/-7,9...E+28) zonder decimaalteken; 0 tot en met +/-7,9228162514264337593543950335 met 28 plaatsen rechts van het decimaal;

kleinste niet-nulgetal is +/-0,00000000000000000000000000001 (+/-1E-28)
Dubbel (drijvende komma met dubbele precisie) Double 8 bytes -1.79769313486231570E+308 tot en met -4,94065645841246544E-324 voor negatieve waarden;

4.9406564584124654E-324 tot en met 1.79769313486231570E+308 voor positieve waarden
Geheel getal Int32 4 bytes -2.147.483.648 tot en met 2.147.483.647 (ondertekend)
Lang (lang geheel getal) Int64 8 bytes -9.223.372.036.854.775.808 tot en met 9.223.372.036.854.775.807 (9,2...E+18 ) (ondertekend)
Object Object (klasse) 4 bytes op 32-bits platform

8 bytes op 64-bits platform
Elk type kan worden opgeslagen in een variabele van het type Object
SByte SByte 1 byte -128 tot en met 127 (ondertekend)
Kort (kort geheel getal) Int16 2 bytes -32.768 tot en met 32.767 (ondertekend)
Enkel (drijvende komma met één precisie) Single 4 bytes -3,4028235E+38 tot en met -1,401298E-45 voor negatieve waarden;

1,401298E-45 tot en met 3,4028235E+38 voor positieve waarden
Tekenreeks (lengte van variabele) String (klasse) Afhankelijk van het implementeren van het platform 0 tot ongeveer 2 miljard Unicode-tekens
UInteger UInt32 4 bytes 0 tot en met 4.294.967.295 (niet ondertekend)
ULong UInt64 8 bytes 0 tot en met 18.446.744.073.709.551.615 (1,8...E+19 ) (niet-ondertekend)
Door de gebruiker gedefinieerd (structuur) (neemt over van ValueType) Afhankelijk van het implementeren van het platform Elk lid van de structuur heeft een bereik bepaald door het gegevenstype en onafhankelijk van de bereiken van de andere leden
UShort UInt16 2 bytes 0 tot en met 65.535 (niet ondertekend)

In wetenschappelijke notatie verwijst "E" naar een macht van 10. 3.56E+2 geeft dus 3,56 x 102 of 356 aan en 3.56E-2 geeft 3.56/ 102 of 0,0356 aan.

Notitie

Voor tekenreeksen die tekst bevatten, gebruikt u de functie om van de StrConv ene tekstindeling naar de andere te converteren.

Naast het opgeven van een gegevenstype in een declaratie-instructie, kunt u het gegevenstype van sommige programmeerelementen afdwingen met behulp van een typeteken. Zie Typetekens.

Geheugenverbruik

Wanneer u een elementair gegevenstype declareert, is het niet veilig om aan te nemen dat het geheugenverbruik hetzelfde is als de nominale opslagtoewijzing. Dit komt door de volgende overwegingen:

  • Storage opdracht. De algemene taalruntime kan opslag toewijzen op basis van de huidige kenmerken van het platform waarop uw toepassing wordt uitgevoerd. Als het geheugen bijna vol is, kan het de gedeclareerde elementen zo dicht mogelijk bij elkaar inpakken. In andere gevallen kunnen hun geheugenadressen worden afgestemd op natuurlijke hardwaregrenzen om de prestaties te optimaliseren.

  • Breedte van platform. Storage toewijzing op een 64-bits platform verschilt van de toewijzing op een 32-bits platform.

Samengestelde gegevenstypen

Dezelfde overwegingen zijn van toepassing op elk lid van een samengesteld gegevenstype, zoals een structuur of een matrix. U kunt niet vertrouwen op het samenvoegen van de nominale opslagtoewijzingen van de leden van het type. Bovendien zijn er andere overwegingen, zoals:

  • Overhead. Sommige samengestelde typen hebben aanvullende geheugenvereisten. Een matrix gebruikt bijvoorbeeld extra geheugen voor de matrix zelf en ook voor elke dimensie. Op een 32-bits platform is deze overhead momenteel 12 bytes plus 8 bytes voor elke dimensie. Op een 64-bits platform wordt deze vereiste verdubbeld.

  • Storage indeling. U kunt er niet veilig van uitgaan dat de opslagvolgorde in het geheugen hetzelfde is als uw declaratievolgorde. U kunt zelfs geen veronderstellingen maken over byte-uitlijning, zoals een 2-byte- of 4-bytegrens. Als u een klasse of structuur definieert en u de opslagindeling van de leden wilt beheren, kunt u het StructLayoutAttribute kenmerk toepassen op de klasse of structuur.

Objectoverhead

Een Object verwijzing naar een elementair of samengesteld gegevenstype gebruikt 4 bytes naast de gegevens in het gegevenstype.

Zie ook