Здравствуйте как "присвоить" функцию в переменную:
Есть мат. функции: 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<in T1, in T2, out TResult>
static Func<int, int, int> 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;
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости