Souhrn datových typů (Visual Basic)
Následující tabulka uvádí Visual Basic datových typů, jejich podpůrné typy modulu CLR (Common Language Runtime), jejich nominální přidělení úložiště a jejich rozsahy hodnot.
typ Visual Basic | Struktura typů modulu CLR (Common Language Runtime) | Nominální přidělení úložiště | Rozsah hodnot |
---|---|---|---|
Logická hodnota | Boolean | Závisí na implementaci platformy | True nebo False |
Bajt | Byte | 1 bajt | 0 až 255 (bez znaménka) |
Znak (jeden znak) | Char | 2 bajty | 0 až 65535 (bez znaménka) |
Date (Datum) | DateTime | 8 bajtů | 0:00:00 (půlnoc) dne 1. ledna 0001 až 11:59:59 pm 31. prosince 9999 |
Desetinných | Decimal | 16 bajtů | 0 až +/-79 228 162 514 264 337 593 543 950 335 (+/-7,9...E+28) † bez desetinné čárky; 0 až +/-7,922816251426437593543935 s 28 místy vpravo od desetinné čárky; nejmenší nenulové číslo je +/-0,000000000000000000000000000001 (+/-1E-28) † |
Double (dvojitá přesnost s plovoucí desetinou čárkou) | Double | 8 bajtů | -1,79769313486231570E+308 až -4,94065645841246544E-324 † záporných hodnot; 4,94065645841246544E-324 až 1,79769313486231570E+308 † pro kladné hodnoty |
Integer | Int32 | 4 bajty | -2 147 483 648 až 2 147 483 647 (podepsané) |
Dlouhé (dlouhé celé číslo) | Int64 | 8 bajtů | -9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 (9,2...E+18 †) (podepsané) |
Objekt | Object (třída) | 4 bajty na 32bitové platformě 8 bajtů na 64bitové platformě |
Libovolný typ může být uložen v proměnné typu. Object |
Sbyte | SByte | 1 bajt | -128 až 127 (podepsáno) |
Short (short integer) | Int16 | 2 bajty | -32 768 až 32 767 (podepsáno) |
Jednoduché (s plovoucí desetinou čárkou s jednoduchou přesností) | Single | 4 bajty | -3,4028235E+38 až -1,401298E-45 † pro záporné hodnoty; 1.401298E-45 až 3,4028235E+38 † pro kladné hodnoty |
Řetězec (proměnná délka) | String (třída) | Závisí na implementaci platformy | 0 až přibližně 2 miliardy znaků Unicode |
UInteger | UInt32 | 4 bajty | 0 až 4 294 967 295 (bez znaménka) |
ULong | UInt64 | 8 bajtů | 0 až 18 446 744 073 709 551 615 (1,8...E+19 †) (bez znaménka) |
Uživatelem definovaná (struktura) | (dědí z ValueType) | Závisí na implementaci platformy | Každý člen struktury má rozsah určený jeho datovým typem a nezávisle na rozsahech ostatních členů. |
UShort | UInt16 | 2 bajty | 0 až 65 535 (bez znaménka) |
† Ve vědeckém zápisu "E" odkazuje na moc 10. Proto 3,56E+2 označuje 3,56 x 102 nebo 356 a 3,56E-2 označuje 3,56 / 102 nebo 0,0356.
Poznámka
U řetězců obsahujících text použijte funkci k převodu StrConv z jednoho textového formátu na jiný.
Kromě určení datového typu v příkazu deklarace můžete datový typ některých programovacích prvků vynutit pomocí znaku typu. Viz znaky typu.
Memory Consumption
Když deklarujete základní datový typ, není bezpečné předpokládat, že jeho spotřeba paměti je stejná jako jeho nominální přidělení úložiště. Důvodem jsou následující aspekty:
Storage přiřazení. Modul CLR (Common Language Runtime) může přiřazovat úložiště na základě aktuálních charakteristik platformy, na které se vaše aplikace spouští. Pokud je paměť téměř plná, může vaše deklarované prvky zabalit co nejblíže dohromady. V jiných případech může zarovnat jejich adresy paměti k přirozeným hardwarovým hranicím za účelem optimalizace výkonu.
Šířka platformy. Storage přiřazení na 64bitové platformě se liší od přiřazení na 32bitové platformě.
Složené datové typy
Stejné aspekty platí pro každý člen složeného datového typu, například strukturu nebo pole. Nemůžete se spolehnout, že se jednoduše sčítá nominální přidělení úložiště členů typu. Kromě toho existují další aspekty, například následující:
Režie. Některé složené typy mají další požadavky na paměť. Například pole používá pro samotnou matici další paměť a také pro každou dimenzi. Na 32bitové platformě je tato režie aktuálně 12 bajtů plus 8 bajtů pro každou dimenzi. Na 64bitové platformě se tento požadavek zdvojnásobí.
Storage rozložení. Nelze bezpečně předpokládat, že pořadí úložiště v paměti je stejné jako pořadí deklarace. Nemůžete ani předpokládat zarovnání bajtů, například 2 bajtové nebo 4 bajtové hranice. Pokud definujete třídu nebo strukturu a potřebujete řídit rozložení úložiště jejích členů, můžete použít StructLayoutAttribute atribut na třídu nebo strukturu.
Režie objektu
Odkaz Object
na jakýkoli základní nebo složený datový typ používá kromě dat obsažených v datovém typu 4 bajty.