Insoniyat tarixining ko‘p asrlik tajribasi ezgu g‘oyalardan va sog‘lom mafkuradan mahrum biron-bir jamiyatning uzoqqa bora olmasligini ko‘rsatdi



Download 1,23 Mb.
bet12/13
Sana12.04.2022
Hajmi1,23 Mb.
#546571
1   ...   5   6   7   8   9   10   11   12   13
Bog'liq
Alijonov Toxirjon Muxammadyusuf o’g’li

Masalan:
using System;
namespace qaytish_tipi_mosligi
{
delegate object ObjectRetriever();
class Test
{
static void Main()
{
ObjectRetriever o = new ObjectRetriever (RetrieveString);
object result = o();
Console.WriteLine (result); // guldasta
Console.ReadLine();
}
static string RetrieveString() 
{
return "guldasta";
}
}
}
Dastur natijasi:

ObjectRetriever delegati object ni qaytarib olishni kutadi, ammo object ning kichik sinfini ham olish mumkin, chunki delegatlarning qaytish tiplari kovariantdir.


2.7 Hodisalar


Delegatlardan foydalanilganda, odatda ikkita mustaqil qism paydo bo'ladi: takrorlovchi va abonent.
Takrorlovchi - delegatlar maydonini o'z ichiga olgan bir tip.
Takrorlovchi delegatga murojaat qilib, qachon yetkazib berish kerakligini aniqlaydi.
Abonentlar - maqsadli qabul qilish metodlari.
Abonent takrorlovchi delegatidagi + = va - = operatsiyalaridan foydalanib, jarayonni qachon boshlash va to'xtatish to'g'risida qaror qabul qiladi. Abonent boshqa abonentlar haqida hech narsa bilmaydi va ularning ishlariga xalaqit bermaydi.
event konstruktsiyasi faqat “takrorlovchi / abonent” modeli tomonidan talab qilinadigan delegatlar imkoniyatlari to'plamini ochadi. Hodisalarning asosiy maqsadi - abonentlarning bir-biriga ta'sir qilishining oldini olish.
Hodisani e'lon qilishda kalit so'z hodisa delegati oldiga qo'yiladi:
public delegate void PriceChangedHandler (decimal oldPrice, decimal newPrice);
public class Broadcaster
{
public event PriceChangedHandler PriceChanged; // Hodisani e’lon qilish
}
Broadcaster tipidagi kod PriceChanged a'zosiga to'liq kirish huquqiga ega va uni delegat sifatida qabul qilishi mumkin.
Broadcaster tashqarisidagi kod faqat PriceChanged hodisasida + = va - = operatsiyalarni bajarishi mumkin.
"+ =" operatoridan foydalangan holda hodisaga qo’shilish;
"- =" operatori yordamida hodisani bekor qilish mumkin.
Hodisani boshqaradigan funksiya event handler deb ataladi. Hodisalarni ishlab chiqaruvchisi hodisa delegati e'lon qilgan imzoga ega bo'lishi kerak. Hodisalar handler funksiyasiga o'tkaziladigan argumentlarga ega bo'lishi mumkin. Ular static, virtual, sealed va abstract deb e'lon qilinishi mumkin. Agar abonent bo'lmasa, Hodisa lar ishlamaydi.
Misol:
using System;
namespace Hodisalar
{
public delegate void PriceChangedHandler (decimal oldPrice, decimal newPrice); 
public class Stock 
{
string symbol; decimal price;
public Stock (string symbol) 
{ this.symbol = symbol; } 
public event PriceChangedHandler PriceChanged;
public decimal Price 
{
get
{
return price;

set 
{
if (price == value) return; // hech narsa o'zgarmasa chiqadi
decimal oldPrice = price; price = value;
if (PriceChanged != null)
PriceChanged (oldPrice, price);
}
}
}
}

Download 1,23 Mb.

Do'stlaringiz bilan baham:
1   ...   5   6   7   8   9   10   11   12   13




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©www.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