Типы значений и ссылочные типы

В Visual Basic, типы данных реализованы на основе их классификации. Типы данных Visual Basic могут классифицироваться в соответствии с тем, хранят ли переменные таких типов собственные данные или указатель на них. Если переменная хранит собственные данные, она имеет тип значения. Если переменная содержит указатель на данные в другом месте в памяти, она имеет ссылочный тип.

Типы значений

Тип данных является типом значений, если он содержит данные в пределах своей собственной области памяти. К типам значения относятся:

  • Все числовые типы данных

  • Boolean, Char и Date

  • Все структуры, даже если их члены являются ссылочными типами

  • Перечисления, поскольку их базовый тип всегда является SByte, Short, Integer Long, Byte, UShort, UInteger или ULong

Каждая структура является типом значения, даже если она содержит члены ссылочного типа. По этой причине типы значений как Char и Integer реализуйте структурами платформы .NET Framework.

Можно объявить тип значения с помощью зарезервированного ключевого слова, например, Decimal. Ключевое слово New также может быть использовано для инициализации типа значений. Это особенно полезно, если тип имеет конструктор, принимающий параметры. Примером этого является конструктор #ctor(Int32, Int32, Int32, Boolean, Byte), который строит новое значение Decimal от предоставленных частей.

Ссылочные типы

Ссылочный тип содержит указатель на другую область памяти, содержащую данные. К ссылочным типам относятся:

  • String

  • Все массивы, даже если их члены являются типами значений

  • Типы классов, например Form

  • Делегаты

Класс является ссылочным типом. По этой причине ссылочные типы, например Object и String, поддерживаются классами .NET Framework. Обратите внимание, что любой массив является ссылочным типом, даже если он содержит элементы типа значения.

Поскольку каждый ссылочный тип, представляющий базовый класс платформы .NET Framework, необходимо использовать Оператор New (Visual Basic) ключевое слово при инициализации. Следующий оператор инициализирует массив:

Dim totals() As Single = New Single(8) {}

Элементы, которые не являются типами

Следующие элементы программирования не квалифицируются как типы, так как нельзя указывать ни один из них в качестве типа данных для объявленного элемента:

  • Пространства имен

  • Модули

  • События

  • Свойства и процедуры

  • Переменные, константы и поля

Работа с типом данных объекта

Переменной типа данных Object можно присвоить либо тип значения, либо ссылочный тип. Переменная Object всегда содержит указатель на данные, но никогда не содержит самих данных. Однако, если присвоить тип значений переменной Object, то она ведет себя так, как если бы она содержала свои собственные данные. Дополнительные сведения см. в разделе Тип данных Object.

Можно выяснить, является ли Object переменная действует как ссылочный тип или тип значения, передавая его на IsReference метод Information класс Microsoft.VisualBasic пространство имен. Метод Information.IsReference возвращает True, если содержимое переменной Object представляет ссылочный тип.

См. также

Ссылки

Оператор Structure

Тип данных Object

Основные понятия

Типы значения, допускающие Null (Visual Basic)

Эффективное использование типов данных (Visual Basic)

Типы данных в Visual Basic

Другие ресурсы

Преобразование типов в Visual Basic