Страницы

Поиск по вопросам

понедельник, 15 апреля 2019 г.

Как “присвоить” функцию в переменную?

Здравствуйте как "присвоить" функцию в переменную:
Есть мат. функции: int sum(a,b); int sub(a,b); int div(a,b)
Есть код:
void main(){ operation = sum; }
var operation; int calc(a,b) { ... operation(a,b); ... }
P.S. Я знаю, как передать функцию в виде аргумента, но тут другая ситуация и нужно именно функцию "присвоить" переменной.


Ответ

Чтобы присвоить функцию переменной, нужно чтобы переменная имела тип делегата, который описывает в точности такую же сигнатуру функции.
Вот пример с двумя вариантами:
class Program { //Можно явно создать делегат, описывающий нужную сигнатуру delegate int MathOperation(int a, int b); //И использовать его как тип static MathOperation Operation1;
//Либо не создавать явно делегат, а использовать Func static Func Operation2;
static void Main(string[] args) { Operation1 = Sub; var sub = Operation1(10, 5);
Operation2 = Sum; var sum = Operation2(10, 5); }
static int Sub(int a, int b) { return a - b; }
static int Sum(int a, int b) { return a + b; } }

Комментариев нет:

Отправить комментарий