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.

Zobacz też