Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W poniższej tabeli przedstawiono typy danych języka Visual Basic, ich pomocnicze typy środowiska uruchomieniowego języka wspólnego, nominalną alokację magazynu i zakresy wartości.
| Typ Visual Basic | Struktura typu środowiska uruchomieniowego języka wspólnego | Nominalna alokacja magazynu | Zakres wartości |
|---|---|---|---|
| Boolean | Boolean | Zależy od implementacji platformy |
True lub False |
| bajt | 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ętny | 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.000000000000000000000000001 (+/-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 |
| Integer | Int32 | 4 bajty | -2,147,483,648 do 2,147,483,647 (podpisane) |
| 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 platformie 64-bitowej |
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 (podpisane) |
| Pojedynczy (zmiennoprzecinkowa z pojedynczą precyzją) | Single | 4 bajty | -3.4028235E+38 do -1.401298E-45 † dla wartości ujemnych; 1.401298E-45 do 3.4028235E+38 † dla wartości dodatnich |
| Ciąg (zmienna długość) | String (klasa) | Zależy od implementacji platformy | Od 0 do około 2 miliardów znaków Unicode |
| liczba całkowita 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. Więc 3.56E+2 oznacza 3,56 x 102 lub 356, a 3,56E-2 oznacza 3,56 / 102 lub 0,0356.
Uwaga / Notatka
W przypadku ciągów zawierających tekst użyj funkcji , aby przekonwertować z jednego formatu tekstowego StrConv 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
W przypadku deklarowania podstawowego typu danych nie można bezpiecznie założyć, że jego użycie pamięci jest takie samo jak nominalna alokacja magazynu. Jest to spowodowane następującymi zagadnieniami:
Przypisanie magazynu. Ś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ć dostosowane do naturalnych granic sprzętu w celu optymalizacji wydajności.
Szerokość platformy. Przypisanie magazynu na 64-bitowej platformie różni się od przypisywania na 32-bitowej platformie.
Typy danych złożonych
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:
Na górze. 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 plus 8 bajtów dla każdego wymiaru. Na 64-bitowej platformie to wymaganie jest dwukrotne.
Układ magazynu. Nie można bezpiecznie założyć, że kolejność przechowywania w pamięci jest taka sama jak kolejność deklaracji. Nie można nawet podjąć założeń dotyczących wyrównania bajtów, takich jak granica 2-bajtowa lub 4-bajtowa. Jeśli definiujesz klasę lub strukturę i musisz kontrolować układ magazynu jej składowych, 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.