Делегатты анықтау орны Егер біз анықтасақ делегат әдетте бағдарлама файлы болып табылатын жоғарғы деңгейлі бағдарламаларда (top-level program).cs жоғарыдағы мысалдағыдай C# 10 нұсқасынан бастап, басқа типтер сияқты, делегат кодтың соңында анықталады. Бірақ негізінен делегатты класс ішінде анықтауға болады:
1
2
3
4
5
6
7
8
9
10
11
12
class Program
{
delegate void Message(); // 1. Делегатты жариялаймыз
static void Main()
{
Message mes; // 2. Делегаттың айнымалысын жасаймыз
mes = Hello; // 3. Бұл айнымалыға әдіс мекен жайын меншіктейміз
mes(); // 4. Әдісті шақырамыз
delegate void Message(); // 1. Делегатты жариялаймыз
class Program
{
static void Main()
{
Message mes; // 2. Делегаттың айнымалысын жасаймыз
mes = Hello; // 3. Бұл айнымалыға әдіс мекен жайын меншіктейміз
mes(); // 4. Әдісті шақырамыз
void Hello() => Console.WriteLine("Hello METANIT.COM");
}
}
Делегаттың параметрлері мен нәтижесі Параметрлерді қабылдайтын және нәтижені қайтаратын делегаттың анықтамасы мен қолданылуын қарастырамыз:
1
2
3
4
5
6
7
8
9
10
11
12
13
Operation operation = Add; // делегат Add әдісіне көрсетеді
int result = operation(4, 5); // фактілі түрде Add(4, 5)
Console.WriteLine(result); // 9
operation = Multiply; // енді делегат Multiply әдісіне көрсетеді
result = operation(4, 5); // фактілі Multiply(4, 5)
Console.WriteLine(result); // 20
int Add(int x, int y) => x + y;
int Multiply(int x, int y) => x * y;
delegate int Operation(int x, int y);
Бұл жағдайда Operation делегаты Int типінің мәнін қайтарады және int түрінің екі параметрі бар. Сондықтан бұл делегат int типінің мәнін қайтаратын және int типінің екі параметрін қабылдайтын кез келген әдіске сәйкес келеді. Бұл жағдайда бұл Add және Multiply әдістері. Яғни, осы әдістердің кез-келгенін делегат айнымалысына тағайындап, шақыра аламыз.
Делегат int типінің екі параметрін қабылдайтындықтан, оны шақырған кезде осы параметрлердің мәндерін беру керек: operation(4,5).