Страницы

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

воскресенье, 9 февраля 2020 г.

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

#c_sharp #функции


Здравствуйте как "присвоить" функцию в переменную:

Есть мат. функции: 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. Я знаю, как передать функцию в виде аргумента, но тут другая ситуация и нужно
именно функцию "присвоить" переменной.
    


Ответы

Ответ 1



Чтобы присвоить функцию переменной, нужно чтобы переменная имела тип делегата, который описывает в точности такую же сигнатуру функции. Вот пример с двумя вариантами: 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; } }

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

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