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


Делегаттарды әдістен қайтару



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

Делегаттарды әдістен қайтару
Сондай-ақ, делегаттарды әдістерден қайтаруға болады. Яғни, біз әдістен басқа әдіс түрінде қандай да бір әрекетті қайтара аламыз. Мысалы:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

Operation operation = SelectOperation(OperationType.Add);
Console.WriteLine(operation(10, 4)); // 14
operation = SelectOperation(OperationType.Subtract);
Console.WriteLine(operation(10, 4)); // 6
operation = SelectOperation(OperationType.Multiply);
Console.WriteLine(operation(10, 4)); // 40
Operation SelectOperation(OperationType opType)
{
switch (opType)
{
case OperationType.Add: return Add;
case OperationType.Subtract: return Subtract;
default: return Multiply;
}
}
int Add(int x, int y) => x + y;
int Subtract(int x, int y) => x - y;
int Multiply(int x, int y) => x * y;
enum OperationType
{
Add, Subtract, Multiply
}
delegate int Operation(int x, int y);

Параметр ретінде берілген жағдайда SelectOperation() әдісі OperationType типті санауышты қабылдайды. Бұл санауышта үш тұрақты сақталады. Олардың әрқайсысына белгілі бір арифметикалық операциялар сәйкес келеді. Параметр мәніне байланысты әдістің өзінде белгілі бір әдісті қайтарамыз. Қайтарылатын әдіс типі Причем поскольку возвращаемый тип метода - делегат Operation, то метод должен возвратить метод, который соответствует этому делегату - в нашем случае это методы Add, Subtract, Multiply. То есть если параметр метода SelectOperation равен OperationType.Add, то возвращается метод Add, который выполняет сложение двух чисел:

1

case OperationType.Add: return Add;

При вызове метода SelectOperation мы можем получить из него нужное действие в переменную operation:

1

Operation operation = SelectOperation(OperationType.Add);

И при вызове переменной operation фактически будет вызываться полученный из SelectOperation метод:

1
2

Operation operation = SelectOperation(OperationType.Add); // Здесь operation = Add
Console.WriteLine(operation(10, 4)); // 14





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




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

    Басты бет