Typ danych — Podsumowanie (Visual Basic)
W poniższej tabeli przedstawiono typy danych Visual Basic, ich pomocnicze typy środowiska uruchomieniowego języka wspólnego, nominalną alokację magazynu i ich zakresy wartości.
typ Visual Basic | Struktura typu środowiska uruchomieniowego języka wspólnego | Nominalna alokacja magazynu | Zakres wartości |
---|---|---|---|
Wartość logiczna | Boolean | Zależy od implementacji platformy | True lub False |
Bajtów | Byte | 1 bajt | Od 0 do 255 (bez znaku) |
Znak (pojedynczy znak) | Char | 2 bajty | Od 0 do 65535 (bez znaku) |
Data | DateTime | 8 bajtów | 0:00:00 (północ) 1 stycznia 0001 do 11:59:59 w dniu 31 grudnia 9999 r. |
Dziesiętnych | Decimal | 16 bajtów | od +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9...E+28) † bez punktu dziesiętnego; od +/-7,922816251426433759354395335 z 28 miejscami po prawej stronie dziesiętnej; najmniejsza liczba niezerowa to +/-0.00000000000000000000000001 (+/-1E-28) † |
Podwójna (zmiennoprzecinkowa podwójna precyzja) | Double | 8 bajtów | -1.79769313486231570E+308 do -4.94065645641246544E-324 † dla wartości ujemnych; 4.94065645841246544E-324 do 1.79769313486231570E+308 † dla wartości dodatnich |
Liczba całkowita | Int32 | 4 bajty | -2,147,483,648 do 2,147,483,647 (podpisany) |
Długa (długa liczba całkowita) | Int64 | 8 bajtów | -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807 (9.2...E+18 †) (podpisane) |
Obiekt | Object (klasa) | 4 bajty na 32-bitowej platformie 8 bajtów na 64-bitowej platformie |
Dowolny typ może być przechowywany w zmiennej typu Object |
Sbyte | SByte | 1 bajt | -128 do 127 (podpisany) |
Krótki (krótka liczba całkowita) | Int16 | 2 bajty | -32,768 do 32,767 (podpisany) |
Pojedynczy (zmiennoprzecinkowa pojedyncza precyzja) | Single | 4 bajty | -3.4028235E+38 do -1.401298E-45 † dla wartości ujemnych; 1.401298E-45 do 3.40235E+38 † dla wartości dodatnich |
Ciąg (długość zmiennej) | String (klasa) | Zależy od implementacji platformy | Od 0 do około 2 miliardów znaków Unicode |
Uinteger | UInt32 | 4 bajty | od 0 do 4294 967 295 (bez znaku) |
Ulong | UInt64 | 8 bajtów | od 0 do 18,446,744,073,709,551,615 (1,8...E+19 †) (bez znaku) |
Zdefiniowane przez użytkownika (struktura) | (dziedziczy z ValueType) | Zależy od implementacji platformy | Każdy element członkowski struktury ma zakres określony przez jego typ danych i niezależny od zakresów pozostałych elementów członkowskich |
Ushort | UInt16 | 2 bajty | od 0 do 65 535 (bez znaku) |
• W notacji naukowej "E" odnosi się do potęgi 10. Tak więc 3,56E+2 oznacza 3,56 x 102 lub 356, a 3,56E-2 oznacza 3,56 / 102 lub 0,0356.
Uwaga
W przypadku ciągów zawierających tekst użyj StrConv funkcji , aby przekonwertować z jednego formatu tekstu na inny.
Oprócz określania typu danych w instrukcji deklaracji można wymusić typ danych niektórych elementów programowania przy użyciu znaku typu. Zobacz Znaki typu.
Zużycie pamięci
Podczas deklarowania podstawowego typu danych nie jest bezpieczne założenie, że zużycie pamięci jest takie samo jak nominalna alokacja magazynu. Jest to spowodowane następującymi zagadnieniami:
Storage przypisanie. Środowisko uruchomieniowe języka wspólnego może przypisywać magazyn na podstawie bieżących cech platformy, na której jest uruchamiana aplikacja. Jeśli pamięć jest prawie pełna, może spakować zadeklarowane elementy tak blisko siebie, jak to możliwe. W innych przypadkach ich adresy pamięci mogą być wyrównane do naturalnych granic sprzętu, aby zoptymalizować wydajność.
Szerokość platformy. Storage przypisanie na 64-bitowej platformie różni się od przypisania na 32-bitowej platformie.
Złożone typy danych
Te same zagadnienia dotyczą każdego elementu członkowskiego złożonego typu danych, takiego jak struktura lub tablica. Nie można polegać na po prostu dodaniu nominalnych alokacji magazynu elementów członkowskich typu. Ponadto istnieją inne zagadnienia, takie jak:
Obciążenie. Niektóre typy złożone mają dodatkowe wymagania dotyczące pamięci. Na przykład tablica używa dodatkowej pamięci dla samej tablicy, a także dla każdego wymiaru. Na 32-bitowej platformie obciążenie to obecnie 12 bajtów i 8 bajtów dla każdego wymiaru. Na 64-bitowej platformie to wymaganie jest podwojone.
układ Storage. Nie można bezpiecznie założyć, że kolejność przechowywania w pamięci jest taka sama jak kolejność deklaracji. Nie można nawet założyć założeń dotyczących wyrównania bajtów, takich jak granica 2 bajtów lub 4 bajtów. Jeśli definiujesz klasę lub strukturę i musisz kontrolować układ magazynu jej elementów członkowskich, możesz zastosować StructLayoutAttribute atrybut do klasy lub struktury.
Obciążenie obiektu
Odwołanie Object
do dowolnego typu danych podstawowych lub złożonych używa 4 bajtów oprócz danych zawartych w typie danych.