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, Chari Date

  • Wszystkie struktury, nawet jeśli ich składowe są typami referencyjnymi

  • Wyliczenia, ponieważ ich typ bazowy jest zawsze SByte, , Short, IntegerLong, Byte, UShortUIntegerlubULong

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.

Zobacz też