Поделиться через


Тип данных Object

Обновлен: Ноябрь 2007

Содержит 32-разрядные (4-байтные) адреса, которые ссылаются на объекты. Переменной Object можно назначить любой ссылочный тип (строка, массив, класс или интерфейс). Переменная Object может также ссылаться на данные любого типа значения (числовые, Boolean, Char, Date, структуры или перечисления).

Заметки

Тип данных Object может указывать на данные любого типа данных, включая любой экземпляр объекта, который распознает приложение. Используйте Object, когда во время компиляции не известно, на какой тип данных указывает переменная .

Значением Object по умолчанию является Nothing (пустая ссылка).

Типы данных

Переменной Objectможно назначить переменную, константу или выражение любого типа данных. Чтобы определить тип данных, на который в данных момент ссылается переменная Object, можно использовать метод GetTypeCode класса System.Type. Это показано в приведенном ниже примере.

Dim myObject As Object
' Suppose myObject has now had something assigned to it.
Dim datTyp As Integer
datTyp = Type.GetTypeCode(myObject.GetType())

Тип данных Object является ссылочным типом. Однако Visual Basic обрабатывает переменную Object в качестве типа значения, если она ссылается на данные типа значения.

Хранение

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

Советы по программированию

  • Вопросы взаимодействия. При взаимодействии с компонентами, написанными не для платформы .NET Framework, например автоматизации или COM-объектов, следует учитывать, что типы указателей в других средах несовместимы с типом Object Visual Basic.

  • Производительность. Переменная, объявленная с помощью типа Object, является достаточно гибкой для того, чтобы содержать ссылку на любой объект. Однако при вызове метода или свойства для такой переменной всегда вызывается позднее связывание (во время выполнения). Чтобы принудительно использовать раннее связывание (во время компиляции) и повысить производительность, объявите переменную с помощью имени определенного класса или преобразуйте ее к определенному типу данных.

    При объявлении объектной переменной, пытайтесь использовать определенный тип класса, например OperatingSystem, вместо универсального типа Object. Следует также использовать определенные доступные классы, например TextBox, вместо Control, чтобы получить доступ к их свойствам и методам. Обычно для нахождения возможных имен классов используется список Classes в Object Browser.

  • Расширение. Все типы данных и все ссылочные типы расширяются до типа данных Object. Это означает, что можно преобразовать любой тип к типу Object без ошибки System.OverflowException.

    Однако при преобразовании типов значений и типов Object Visual Basic выполняет операции boxing и unboxing, которые снижают скорость выполнения.

  • Символы типа. Тип Object не имеет символов типа литерала или символов типа идентификатора.

  • Тип платформы. В .NET Framework соответствующим типом является класс System.Object.

Пример

В следующем примере показано, как переменная Object указывает на экземпляр объекта.

Dim objDb As Object
Dim myCollection As New Collection()
' Suppose myCollection has now been populated.
objDb = myCollection.Item(1)

См. также

Задачи

Практическое руководство. Определение наличия связи между двумя объектами

Практическое руководство. Определение идентичности двух объектов

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

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

Object как универсальный тип данных

Ссылки

Сводка типов данных (Visual Basic)

Object

Функции преобразования типов

Сводка преобразования