Иллюстрированный самоучитель по Visual Basic .NET

Корневой базовый класс Object. Основные методы класса Object.

Вся работа .NET Framework (а следовательно, и VB.NET) основана на том, что каждый тип является производным от корневого класса Object, общего предка всех классов (в ООП такие классы иногда называются космическими (space) базовыми классами). К классу Object восходят все типы, как ссылочные (экземпляры классов), так и структурные (числовые типы и даты, перечисляемые типы и структуры). В частности, из этого следует, что любой функции, получающей параметр типа Object, можно передать параметр произвольного типа (поскольку главное правило наследования, упоминавшееся в начале главы, требует, чтобы переменная производного типа могла использоваться в любом контексте вместо переменной базового типа).

Примечание
Программисты с опытом работы в ранних версиях VB иногда представляют тип Object как аналог печально известного типа Variant. He поддавайтесь этому искушению! Тип Variant был всего лишь одним из типов данных, который позволял хранить другие типы данных; тип Object является корневым базовым классом, на котором завершается вся иерархия наследования в .NET
.

Класс Object содержит ряд встроенных логических функций, предназначенных для проверки типа объектной переменной:

  • IsArray: функция проверяет, содержит ли объектная переменная массив.
  • IsDate: функция проверяет, можно ли интерпретировать объект как дату и время.
  • IsNumeriс: функция проверяет, можно ли интерпретировать объект как число.

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

Sub Maine)
Dim a As Integer = 3
Console.Writel_ine("a is a value type is " & IsValueType(a))
Console. ReadLine()
End Sub
Function IsValueType(ByVal thing As Object) As Boolean
Return (TypeOf (thing) Is System.ValueType)
End Function

Примечание
Вероятно, перед нами одна из ошибок разработчиков VB.NET – функция TypeOf не может вызываться для структурных переменных без определения вспомогательной функции, получающей объект указанного типа. Конечно, следовало бы позволить программисту передавать структурный тип при вызове TypeOf
.

Основные методы класса Object

Поскольку класс Object является общим предком всех типов VB.NET, весьма вероятно, что вам придется часто использовать (или переопределять) методы этого класса. Основные методы Object описаны в нескольких ближайших разделах.

Примечание
Довольно часто возникает желание переопределить защищенный метод Finalize класса Object. Теоретически код переопределенного метода Finalize выполняется при освобождении памяти, занимаемой объектом, в процессе сборки мусора. На практике использовать этот метод нежелательно. Поскольку вы не знаете, когда и в какой последовательности будут вызваны методы Finalize, использовать их для деинициализа-ции классов в лучшем случае ненадежно. Вместо этого следует реализовать метод Dispose, описанный в разделе "IDisposable" этой главы. А если вы все же переопределяете метод Finalize, учтите, что в нем необходимо вызвать MyBase.Finalize и продублировать весь код из метода Dispose
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.