ПОНЯТНО О Visual Basic NET (том 2)

Переменные объектного типа


В 6.1.2 мы видели, что переменные могут иметь объектный тип. Проиллюстрируем это на примере. Создайте проект и поместите на форму метку Label1 и кнопку. Введите такой код:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim A As Object

        A = Label1

        A.text = "Я метка"

        A = Me

        A.text = "Я форма"

        A = Me.CreateGraphics

        A.DrawLine(Pens.Black, 20, 20, 200, 200)

End Sub

Пояснения. Слово Object в операторе   Dim A As Object   говорит о том, что переменная A может иметь своим значением любой объект.

Следующий оператор  A = Label1  присваивает переменной A значение существующего объекта – метки Label1. Это значит, что теперь все равно, как написать:

        Label1.Text = "Я метка"

или

        A.text = "Я метка"

Эффект будет одинаковый.

Получается, что через переменную A вы получили доступ ко всем свойствам и другим возможностям метки, доступным через имя Label1.

Обратите внимание, что когда вы набираете точку после буквы A, никакого привычного нам вразумительного списка свойств и методов не появляется и слово text приходится полностью набирать вручную. Дело в том, что состав этого списка определяется типом объекта, после которого вы набираете точку. Тип Object настолько универсален, что практически не существует свойств и методов, присущих одновременно всем объектам VB.

В следующем операторе   A = Me   ветреная и непостоянная A изменяет метке и принимает в качестве своего значения форму. С тем же результатом всевластия над возможностями формы. О метке забыто.

Оператор   A = Me.CreateGraphics   присваивает переменной A значение объекта класса Graphics. В результате через переменную A вы получили доступ ко всем возможностям рисования.

Тип Object – самый общий объектный тип. Есть более узкие объектные типы. Например, Control. Переменная, объявленная этим типом, уже не может быть любым объектом, но может, например, принимать значение любого элемента управления.

Типы Label и Button – еще более узкие типы. Так, переменная, объявленная типом Button, может быть любой кнопкой, но только кнопкой. Говорят, что эта переменная стала объектом класса Button.



Содержание раздела