C# для начинающих Пахомов Б. И



Download 8,15 Mb.
Pdf ko'rish
bet188/266
Sana20.04.2022
Hajmi8,15 Mb.
#567200
1   ...   184   185   186   187   188   189   190   191   ...   266
Bog'liq
C# for beginners


Часть II. Объектно-ориентированное программирование 
public event MyHandler2 Event2; // Поле 2. 2-е
// событие. Тип переменной — 2-й делегат 
public void FireEvent1(MyEventArgs e) // Обработка 
// события 

if(Event1 != null) 

Event1(this, e); // Event1 сформировано 
// конструктором класса А 


public void FireEvent2(MyEventArgs e) 

if(Event2 != null) 
{ Event2(this,e); } 


// Задание собственного класса, содержащего 
// информацию для обработчика события 
public class MyEventArgs : EventArgs 
{ public string m_id; } 
public class Program 

public static void Main() 

B b= new B(); 
A a= new A(b); 
MyEventArgs e1=new MyEventArgs(); // Объект, 
// содержащий аргументы для 1-го события 
MyEventArgs e2=new MyEventArgs(); // Объект, 
// содержащий аргументы для 2-го события 
e1.m_id ="Аргументы для события 1"; 
e2.m_id ="Аргументы для события 2"; 
// Внутри этих методов происходит фактическая 
// обработка событий: 
b.FireEvent1(e1); // Обработка 1-го события 
b.FireEvent2(e2); // Обработка 2-го события 


Глава 13. Делегаты и события 
301 
Console.Read(); 



Рис. 13.2. 
Результат создания и обработки событий 
Итак, мы видели, что в классе 
В
заданы два события в виде (мы берем 
для пояснения одно, первое) 
public event MyHandler1 Event1; 
Здесь 
MyHandler1
— делегат, связываемый с событием 
Event1
. Обработ-
ка компилятором ключевого слова 
event
приводит к автоматическому 
получению методов регистрации и отмены регистрации события в про-
грамме. Если посмотреть программу с помощью функции IL Dasm 
(
Tools | IL Dasm
), то можно обнаружить, что компилятор формирует 
в этом случае два метода: 
Add_.ИмяСобытия()
и 
Remove_.ИмяСобытия()

То есть один метод добавляет событие, а другой его удаляет при необ-
ходимости. Итак, задание события означает автоматическую отправку 
этого события, как говорят, вызывающему коду, т. е. программе. Вызы-
вающий код должен это событие зарегистрировать. Поэтому в методе 
обработки события 
public void FireEvent1(MyEventArgs e) 
в самом начале должна стоять (и на самом деле стоит) проверка 
if(Event1 != null)
, означающая вопрос: зарегистрировано ли данное 
событие в вызывающем коде? Если событие зарегистрировано, то вы-
полняется обработчик этого события. 
Регистрация события происходит с помощью операций 
+=
и 
-=
. Эти 
операции и вызывают на самом деле выполнение методов 
Add_.Event1()
и 
Remove_.Event1()
. Последний метод отключает обработку события. 
В нашем случае в классе 
А
, а точнее — в его конструкторе и происходит 
фактическая регистрация обоих событий. Сами события объявлены
в классе 
В
, а их регистрация происходит при создании объекта класса 
А

т. к. объект создается конструктором. В конструкторе 
А
из первого деле-
гата создается объект 
d1
для вызова первого обработчика события, а из 


302 
Download 8,15 Mb.

Do'stlaringiz bilan baham:
1   ...   184   185   186   187   188   189   190   191   ...   266




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish