Respublikasi oliy va o’rta maxsus ta’lim vazirligi guliston davlat universiteti amaliy matematika va


Hodisalarni aniqlash va ko'tarish


Download 1.4 Mb.
bet28/57
Sana26.06.2023
Hajmi1.4 Mb.
#1655865
1   ...   24   25   26   27   28   29   30   31   ...   57
Bog'liq
portal.guldu.uz-Дастурлаш технологиялари

Hodisalarni aniqlash va ko'tarish


Voqealar sinfda voqea so'zi yordamida e'lon qilinadi, so'ngra voqeani ifodalovchi vakil turi:

delegate void AccountHandler(string message); event AccountHandler Notify;


Bunday holda, biz avval AccountHandler vakolatxonasini aniqlaymiz, u bitta turdagi string parametrini oladi. Keyin, voqea kalit so'zidan foydalanib, AccountHandler vakili tomonidan taqdim etilgan xabar berish nomli voqea aniqlanadi. Tadbirning nomi o'zboshimchalik bilan bo'lishi mumkin, ammo har qanday holatda u qandaydir delegatni ifodalashi kerak.


Hodisani aniqlab, uni voqea nomidan foydalanib usul sifatida dasturda chaqira olamiz:


Notify("Произошло действие");


Notify hodisasi bir turdagi string string - stringni oladigan AccountHandler vakili bo'lgani uchun, biz voqeani chaqirganimizda unga mag'lubiyatni etkazishimiz kerak.


46
Biroq, voqealarni chaqirganda, biz hech qanday ishlov beruvchi aniqlanmagan bo'lsa, voqea null ekanligiga duch kelishimiz mumkin. Shuning uchun, tadbirga qo'ng'iroq qilishda har doim null holatini tekshirganingiz ma'qul. Masalan, shunga o'xshash:

if(Notify !=null) Notify("Произошло действие");


Yoki shunga o'xshash:


Notify?.Invoke("Произошло действие");


Bunday holda, voqea delegat bo'lganligi sababli, uni parametrlar uchun kerakli qiymatlarni o'tkazib, uni Invoke () usuli yordamida chaqirishimiz mumkin.


Barchasini birlashtiring va voqea yarating va yoqing:


class Account


{
public delegate void AccountHandler(string message);
public event AccountHandler Notify; // 1.Определение события public Account(int sum)
{
Sum = sum;
}
public int Sum { get; private set;} public void Put(int sum)
{
Sum += sum;
Notify?.Invoke($"На счет поступило: {sum}"); // 2.Вызов события
}
public void Take(int sum)
{
if (Sum >= sum)
{
Sum -= sum;
Notify?.Invoke($"Со счета снято: {sum}"); // 2.Вызов события
}
else
{
Notify?.Invoke($"Недостаточно денег на счете. Текущий баланс:
{Sum}"); ;
}
}
}
Endi "Xabar berish" tadbiridan foydalanib, biz tizimga mablag 'qo'shilganligi va hisobdan mablag' olinishi yoki hisobda mablag 'etishmasligi to'g'risida xabar beramiz.



Download 1.4 Mb.

Do'stlaringiz bilan baham:
1   ...   24   25   26   27   28   29   30   31   ...   57




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