Typy wartości i odwołań
W Visual Basic istnieją dwa rodzaje typów: typy odwołań i typy wartości. W zmiennych typu referencyjnego są przechowywane odwołania do ich danych (obiekty), a zmienne typu wartości zawierają bezpośrednio swoje dane. W przypadku typów referencyjnych dwie zmienne mogą odwoływać się do jednego obiektu, a więc operacje wykonane na jednej zmiennych mogą mieć wpływ na obiekt, do którego odwołuje się druga zmienna. W przypadku typów wartości każda zmienna ma własną kopię danych i nie jest możliwe, aby operacje na jednej zmiennej wpływały na drugą (z wyjątkiem w przypadku modyfikatora ByRef na parametrach).
Typy wartości
Typ danych jest typem wartości, jeśli przechowuje dane w ramach własnej alokacji pamięci. Typy wartości obejmują następujące elementy:
Wszystkie typy danych liczbowych
Boolean
,Char
iDate
Wszystkie struktury, nawet jeśli ich składowe są typami referencyjnymi
Wyliczenia, ponieważ ich typ bazowy jest zawsze
SByte
, ,Short
,Integer
Long
,Byte
,UShort
UInteger
lubULong
Każda struktura jest typem wartości, nawet jeśli zawiera składowe typu odwołania. Z tego powodu typy wartości, takie jak Char
i Integer
, są implementowane przez struktury .NET Framework.
Typ wartości można zadeklarować przy użyciu zastrzeżonego słowa kluczowego, na przykład Decimal
. Możesz również użyć słowa kluczowego New
, aby zainicjować typ wartości. Jest to szczególnie przydatne, jeśli typ ma konstruktor, który przyjmuje parametry. Przykładem tego jest Decimal(Int32, Int32, Int32, Boolean, Byte) konstruktor, który tworzy nową Decimal
wartość z podanych części.
Typy odwołań
Typ odwołania przechowuje odwołanie do danych. Typy referencyjne obejmują następujące elementy:
String
Wszystkie tablice, nawet jeśli ich elementy są typami wartości
Typy klas, takie jak Form
Delegaci
Klasa jest typem referencyjnym. Należy pamiętać, że każda tablica jest typem odwołania, nawet jeśli jego składowe są typami wartości.
Ponieważ każdy typ odwołania reprezentuje podstawową klasę .NET Framework, podczas inicjowania należy użyć słowa kluczowego Nowy operator . Poniższa instrukcja inicjuje tablicę.
Dim totals() As Single = New Single(8) {}
Elementy, które nie są typami
Następujące elementy programowania nie kwalifikują się jako typy, ponieważ nie można określić żadnego z nich jako typu danych dla zadeklarowanego elementu:
Przestrzenie nazw
Moduły
Zdarzenia
Właściwości i procedury
Zmienne, stałe i pola
Praca z typem danych obiektu
Typ odwołania lub typ wartości można przypisać do zmiennej Object
typu danych. Zmienna Object
zawsze przechowuje odwołanie do danych, nigdy nie zawiera samych danych. Jeśli jednak przypiszesz typ wartości do zmiennej Object
, zachowuje się tak, jakby przechowywał własne dane. Aby uzyskać więcej informacji, zobacz Object Data Type (Typ danych obiektu).
Możesz dowiedzieć się, czy zmienna Object
działa jako typ odwołania, czy typ wartości, przekazując ją do IsReference metody w Information klasie Microsoft.VisualBasic przestrzeni nazw. Information.IsReference Zwraca True
wartość , jeśli zawartość zmiennej Object
reprezentuje typ odwołania.