Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник_С#_ч_2.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

8.4 Параметр по ссылке this

Рассмотрим специальное поле указатель (this), которое формируется автоматически при создании объекта и содержит адрес созданного объекта.

Фактически связь полей объекта с методами класса происходит через параметр this. Каждый метод класса может непосредственно обращаться к параметру this для работы с элементами текущего объекта. Поскольку значение this всегда соответствует текущему объекту (объекту, с которым в текущий момент работает программа), то методы класса будут работать с элементами текущего объекта.

Использование параметра this применяется во многих конструкторах для инициализации полей объектов. Многие авторы при описании конструкторов классов в качестве имен формальных параметров используют имена полей классов и для того чтобы различать поля классов и имена формальных параметров перед именами полей классов указывается параметр this. Например, наш конструктор treyg в этом случае необходимо было бы записать следующим образом:

public treyg(int a, int b, int c)

{

this.a = a; this.b = b; this.c = c;

}

Избежать конфликта имен можно более простым способом – просто выбрав другие имена для формальных параметров (что мы и сделали в программе).

Параметр this нельзя использовать при обращении к статическим элементам класса, так как они принадлежат не конкретному объекту, а классу в целом.

В языке С# применяется еще один параметр по ссылке base, который используется для работы с базовым (родительским) объектом. Если Вы внимательно посмотрите исходный код файла Form1.Designer.cs, а именно метод void Dispose(bool disposing), то в последних строках кода этого метода обычно находится запись base.Dispose(disposing);, которая позволяет при удалении объекта из памяти удалять и родительский (базовый) объект.

8.5 События класса

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

Обычно механизм события используется в многопоточных процессах при синхронизации – упорядочения очередности работы этих потоков. Однако этот же механизм можно использовать в Windows-приложениях, в которых такие элементы, как кнопки, флажки, переключатели и т. п., выдают информацию о взаимодействии с ними пользователя. Например, все объекты - кнопки (класса Button) при щелчке мышью возбуждают событие OnClick. Но для одной кнопки это событие приведет, например, к вводу набранных значений, для другой выполнит некоторое преобразование значений (например, их сортировку), а для третьей откроет окно другой формы.

Каждый элемент управления, размещаемый на форме, имеет определенный набор событий, «пустые» обработчики которых можно получить с помощью окна свойств этого элемента. Однако разработчики программ могут разработать свои специальные обработчики событий. Для реализации механизма события – извещение клиентов некоторого класса о факте наступления события класс - источник события должен:

объявить событие как член класса (наряду с полями, методами, свойствами) — для объявления используется зарезервированное слово event;

передать клиентам класса (получателям события) в нужный момент информацию о наступившем событии, сопроводив ее необходимыми параметрами;

получить от клиента (клиентов) ответ и, проанализировав его, выполнить связанное с событием действие.

Две последних операции (обмен информацией с клиентами) обычно реализуются с помощью делегатов, которые мы будем рассматривать в следующих лекциях.