Параметр по ссылке 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);, которая позволяет при удалении объекта из памяти удалять и родительский (базовый) объект.
События класса
Важной составной частью ООП является реализованный в классах механизм событий.С помощью этого механизма один объект (источник события) может сообщить другому объекту (получателю события) об изменении своего состояния.
Обычно механизм события используется в многопоточных процессах при синхронизации – упорядочения очередности работы этих потоков. Однако этот же механизм можно использовать в Windows-приложениях, в которых такие элементы, как кнопки, флажки, переключатели и т. п., выдают информацию о взаимодействии с ними пользователя. Например, все объекты-кнопки (класса Button) при щелчке мышью возбуждают событие OnClick. Но для одной кнопки это событие приведет, например, к вводу набранных значений, для другой выполнит некоторое преобразование значений (например, их сортировку), а для третьей откроет окно другой формы.
Каждый элемент управления, размещаемый на форме, имеет определенный набор событий, «пустые» обработчики которых можно получить с помощью окна свойств этого элемента. Однако разработчики программ могут разработать свои специальные обработчики событий. Для реализации механизма события – извещение клиентов некоторого класса о факте наступления события класс-источник события должен:
объявить событие как член класса (наряду с полями, методами, свойствами) — для объявления используется зарезервированное слово event;
передать клиентам класса (получателям события) в нужный момент информацию о наступившем событии, сопроводив ее необходимыми параметрами;
получить от клиента (клиентов) ответ и, проанализировав его, выполнить связанное с событием действие.
Две последних операции (обмен информацией с клиентами) обычно реализуются с помощью делегатов, которые мы будем рассматривать в следующих лекциях.
Дата добавления: 2018-11-25; просмотров: 200;