Udostępnij za pomocą


Typy wartości i typy referencyjne

W Visual Basic istnieją dwa rodzaje typów: typy odwołań i typy wartości. Zmienne typów referencyjnych przechowują odwołania do ich danych (obiektów), podczas gdy zmienne typów wartości zawierają dane bezpośrednio. 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 i Date

  • 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 lub ULong

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 konstruktor Decimal(Int32, Int32, Int32, Boolean, Byte), który tworzy nową wartość Decimal 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

  • Delegatów

Klasa jest typem referencyjnym. Należy pamiętać, że każda tablica jest typem odwołania, nawet jeśli jej 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 także