Здравствуйте как "присвоить" функцию в переменную:
Есть мат. функции: 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 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;
}
}
Комментариев нет:
Отправить комментарий