Олий таълим ўқув режаларидаги фанларга



Download 4,03 Mb.
bet83/102
Sana23.02.2022
Hajmi4,03 Mb.
#136190
1   ...   79   80   81   82   83   84   85   86   ...   102
Bog'liq
Dasturlash asoslari majmua

Амаллар.
Делегатлар ни тенглик ёки тенгсизлик маъносида таққослаш мумкин. Икки делегат тенг бўлади, агар уларнинг хар иккиси методларга ҳаволаларга эга бўлмаса, ёки улар бир хил тартибдаги бир хил методларга ҳаволаларни сақласа. Турли типдаги делегатларни фақат бир хил типдаги маълумотларни қайтарса ёки параметрларнинг рўйхати бир хил бўлганда таққосаш мумкин.
Бир хил типдаги делегатлар устида содда ва мураккаб қиймат бериш амалини бажариш мумкин, масалан:
Del d1 = new Del( o1.Do ); // o1.Do
Del d2 = new Del( o2.Do ); // o2.Do
Del d3 = d1 + d2; // o1.Do и o2.Do
d3 += d1; // o1.Do, o2.Do и o1.Do
d3 -= d2; // o1.Do и o1.Do
Агар турли вазиятларда методлар жамланмаси комбинацияларининг турли жамланмаларини чақиришга тўғри келганда бу амаллардан фойдаланиш мумкин.
Делегат худди string сатри каби маълумотларнинг ўзгарамйдиган типи ҳисобланади ва шунинг учун иҳтиёрий ўзгариш рўй берганда янги экземпляр яратилади, эскиси эса нокерак маълумотлар ташувчиси (сборщик мусоров) томонидан ўчириб ташланади.

    1. Делегатларни методларга узатиш.

Делегат класс ҳисоблангани учун уни методларга параметр сифатида узатиш мумкин. Шундай қилиб, функционал параметрлаш таъминланади: методга нафақат турли маълумотларни, балки уларни қайта ишловчи қункцияларни хам узатиш мумкин. Функционал параметрлаш универсал методлар хамда тескари мурожаат имкониятларини таъминлаш учун қўлланиши мумкин.
Универсал методга содда намуна қилиб функциянинг аргумент қийматларининг диапазони хамда ўзгариш қадами ва хисобланаётган функциянинг кўриниши узатиладиган қийматлар жадвалини чиқарувчи методини олиш мумкин.
25.3-листинрг.
using System;
namespace ConsoleApplication1
{
public delegate double Fun( double x ); // делегат эълон қилиш
class Class1
{
public static void Table( Fun F, double x, double b )
{
Console.WriteLine( " ----- X ----- Y -----" );
while (x <= b)
{
Console.WriteLine( "| {0,8:0.000} | {1,8:0.000} |", x, F(x));
x += 1;
}
Console.WriteLine( " ---------------------" );
}
public static double Simple( double x )
{
return 1;
}
static void Main()
{
Console.WriteLine( " Sin функциясининг жадвали " );
Table( new Fun( Math.Sin ), -2, 2 );


Console.WriteLine( " Simple функциясининг жадвали " );
Table( new Fun( Simple ), 0, 3 );
}
}
}
Дастур ишининг натижаси
Sin функциясининг жадвали
----- X ----- Y -----
| -2,000 | -0,909 |
| -1,000 | -0,841 |
| 0,000 | 0,000 |
| 1,000 | 0,841 |
| 2,000 | 0,909 |
---------------------
Simple функциясининг жадвали
----- X ----- Y -----
| 0,000 | 1,000 |
| 1,000 | 1,000 |
| 2,000 | 1,000 |
| 3,000 | 1,000 |
---------------------
Тескари мурожаат (callback) ўзида бошқа функцияга параметр сифатида узатиладиган функцияни мужассамлаштиради. 17.1-расмга қаранг. Айтайлик, кутубхонада параметри бошқа функция бўлган А функция тавсифланган. Чақирувчи кодда талаб қилинган сигнатурали (B) функция тавсифланган ва у А функцияга узатилмоқда. А функциянинг чақирилиши В ни ҳам чақиради, яъни бошқарув кутубхонадаги функциялан чақи рувчи кодга узатилади..

17.1-расм. Тескари мурожаат механизми.

Тескари мурожаат механизми дастурлашда кенг қўлланилади. Масалан, у Windows нинг кўплаб функцияларида амалга оширилган.


C# дастурлаш тилида 2.0 версиядан фойдаланувчи Visual Studio 2005 дан бошлаб делегатлар учун синтаксиснинг соддалаштирилган вариантидан фойдалаиш мумкин. Биринчи соддалаштириш кўп холларда делегат экземплярларини ошкор усулда яратишнинг талаб қилинмаслиги билан боғлиқ, чунки у ўрни келганда тўғридан – тўғри яратилади. Иккинчи соддалаштириш шундаки, бевосита делегатдан фойдаланилаётган жойда тавсифланадиган аноним методлар код парчаларини ишлаб чиқиш имконияти билан боғлиқ:

Download 4,03 Mb.

Do'stlaringiz bilan baham:
1   ...   79   80   81   82   83   84   85   86   ...   102




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