Делегаттарды анықтау Делегатты жариялау үшін delegate



бет1/9
Дата08.10.2024
өлшемі59,11 Kb.
#205895
  1   2   3   4   5   6   7   8   9
Байланысты:
Делегат каз


Делегаттар әдістерді көрсететін объектілерді ұсынады. Яғни, делегаттар - бұл әдістердің көрсеткіштері және делегаттардың көмегімен біз осы әдістерді шақыра аламыз.
Делегаттарды анықтау
Делегатты жариялау үшін delegate кілт сөзі қолданылады, содан кейін қайтарылатын типі, атауы және параметрлері келеді. Мысалы:
delegate void Message();

Message делегаты қайтару типі ретінде void типіне ие (яғни ештеңе қайтармайды) және ешқандай параметрлерді қабылдамайды. Бұл дегеніміз, бұл делегат ешқандай параметрді қабылдамайтын және ештеңені қайтармайтын кез-келген әдісті көрсете алады.


Осы делегаттың қолданылуын қарастырайық:

1
2
3
4
5
6
7

Message mes; // 2. Делегаттың айнымалысын жасаймыз
mes = Hello; // 3. Бұл айнымалыға әдіс мекен жайын меншіктейміз
mes(); // 4. Әдісті шақырамыз
void Hello() => Console.WriteLine("Hello METANIT.COM");
delegate void Message(); // 1. Делегатты жариялаймыз

Алдымен осы делегатты анықтау қажет:



1

delegate void Message(); // 1. Делегатты жариялаймыз

Делегатты пайдалану үшін осы делегаттың айнымалысы жарияланады:



1

Message mes; // 2. Делегаттың айнымалысын жасаймыз



Әрі қарай, делегатқа белгілі бір әдістің мекен-жайы беріледі (біздің жағдайда Hello әдісі). Бұл әдіс делегат сияқты қайтарылатын типке және бірдей параметрлер жиынтығына (бұл жағдайда параметрлердің жоқтығына) ие екенін ескереміз.

1

mes = Hello; // 3. Бұл айнымалыға әдіс мекен жайын меншіктейміз



Содан кейін делегат арқылы осы делегатқа сілтеме жасайтын әдісті шақырамыз:

1

mes(); // 4. Әдісті шақырамыз

Делегатты шақыру әдіске ұқсас жасалады.


Бұл жағдайда делегаттар міндетті түрде делегаттың айнымалысы анықталған класста анықталған әдістерді ғана көрсете алмайды. Бұл басқа класстар мен құрылымдардың әдістері болуы мүмкін.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Message message1 = Welcome.Print;
Message message2 = new Hello().Display;
message1(); // Welcome
message2(); // Салем
delegate void Message();
class Welcome
{
public static void Print() => Console.WriteLine("Welcome");
}
class Hello
{
public void Display() => Console.WriteLine("Салем");
}



Достарыңызбен бөлісу:
  1   2   3   4   5   6   7   8   9




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет