Udostępnij za pomocą


Podsumowanie typu danych (Visual Basic)

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.

Zobacz także