Типы значений и ссылочные типы
В Visual Basic есть два типа типов: ссылочные типы и типы значений. В переменных ссылочных типов хранятся ссылки на их данные (объекты), а переменные типа значений содержат свои данные непосредственно. Две переменные ссылочного типа могут ссылаться на один и тот же объект, поэтому операции над одной переменной могут затрагивать объект, на который ссылается другая переменная. При использовании типов значений каждая переменная имеет собственную копию данных, и для операций с одной переменной нельзя влиять на другую (за исключением случаев модификатора ByRef для параметров).
Типы значений
Тип данных — это тип значения, если он содержит данные в пределах собственного выделения памяти. Типы значений включают следующие:
Все числовые типы данных
Boolean
,Char
иDate
Все структуры, даже если их члены являются ссылочными типами
Перечисления, так как их базовый тип всегда
SByte
,Short
Integer
,Long
, ,Byte
,UShort
UInteger
илиULong
Каждая структура — это тип значения, даже если он содержит элементы ссылочного типа. По этой причине типы значений, такие как Char
и Integer
реализуются платформа .NET Framework структурами.
Можно объявить тип значения с помощью зарезервированного ключевое слово, напримерDecimal
. Можно также использовать New
ключевое слово для инициализации типа значения. Это особенно полезно, если тип имеет конструктор, который принимает параметры. Примером этого является Decimal(Int32, Int32, Int32, Boolean, Byte) конструктор, который создает новое Decimal
значение из предоставленных частей.
Ссылочные типы
Ссылочный тип сохраняет ссылку на свои данные. Ссылочные типы включают следующие:
String
Все массивы, даже если их элементы являются типами значений
Типы классов, такие как Form
Делегаты
Класс является ссылочным типом. Обратите внимание, что каждый массив является ссылочным типом, даже если его члены являются типами значений.
Так как каждый ссылочный тип представляет базовый класс платформа .NET Framework, при инициализации необходимо использовать новый оператор ключевое слово. Следующая инструкция инициализирует массив.
Dim totals() As Single = New Single(8) {}
Элементы, которые не являются типами
Следующие элементы программирования не соответствуют типам, так как нельзя указать любой из них в качестве типа данных для объявленного элемента:
Пространства имен
Модули
События
Свойства и процедуры
Переменные, константы и поля
Работа с типом данных объекта
Ссылочный тип или тип значения можно назначить переменной Object
типа данных. Переменная Object
всегда содержит ссылку на данные, никогда не сами данные. Однако при назначении типа значения переменной Object
он ведет себя так, как если бы он содержит собственные данные. Дополнительные сведения см. в разделе "Тип данных объекта".
Можно узнать, действует ли Object
переменная в качестве ссылочного типа или типа значения, передав его IsReference методу в Information классе Microsoft.VisualBasic пространства имен. Information.IsReference возвращает значение True
, если содержимое переменной Object
представляет ссылочный тип.