Делегаттар әдістерді көрсететін объектілерді ұсынады. Яғни, делегаттар - бұл әдістердің көрсеткіштері және делегаттардың көмегімен біз осы әдістерді шақыра аламыз.
Делегаттарды анықтау
Делегатты жариялау үшін delegate кілт сөзі қолданылады, содан кейін қайтарылатын типі, атауы және параметрлері келеді. Мысалы:
delegate void Message();
Message делегаты қайтару типі ретінде void типіне ие (яғни ештеңе қайтармайды) және ешқандай параметрлерді қабылдамайды. Бұл дегеніміз, бұл делегат ешқандай параметрді қабылдамайтын және ештеңені қайтармайтын кез-келген әдісті көрсете алады.
Осы делегаттың қолданылуын қарастырайық:
Алдымен осы делегатты анықтау қажет:
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("Салем");
}
|
Достарыңызбен бөлісу: |