Делегаты -передача метода, как параметра
Есть 2 делегата, у каждого по 1 статическому методу.
Метод 1. 2 параметра, результат - возведение в степень
1- число типа Double
2 - метод 2
Метод 2. 2 параметра, результат - операция, например, сложение, умножение.. 2 чисел
Оба параметра типа Double.
Подскажите простейший код
Код:
Func<double, double, double> MyPow = Math.Pow;
Func<double, double, double> MyAdd = (a, b) => a + b;
Console.WriteLine(MyPow(2, 3));
Console.WriteLine(MyAdd(4, 5));
Func<double, double, double> MyAdd = (a, b) => a + b;
Console.WriteLine(MyPow(2, 3));
Console.WriteLine(MyAdd(4, 5));
Спасибо за ответ. К сожалению, это не то. Ведь мы должны передать результат из метода
MyAdd в качестве параметра в метод MyPow, т.е должно быть MyPow(2, (4+5)).
Это я уже делал. Думаю, что есть другое решение, чтобы окончательный результат можно было бы записать ввиде одной строки.
С наилучшими пожеланиями.
Это не оно: MyPow(2, MyAdd(4+5)) ?
Если отталкиваться от темы топика: "передача метода как параметра", тогда что-то в этом духе:
Код:
static double SomeMethod(double param1, double param2, Func<double, double, double> func)
{
return func(param1, param2);
}
static double MyMult(double a, double b)
{
return a * b;
}
static void Main(string[] args)
{
Func<double, double, double> MyPow = Math.Pow;
Func<double, double, double> MyAdd = (a, b) => a + b;
Console.WriteLine(SomeMethod(2, 3, MyPow));
Console.WriteLine(SomeMethod(4, 5, MyAdd));
Console.WriteLine(SomeMethod(6, 7, MyMult));
}
{
return func(param1, param2);
}
static double MyMult(double a, double b)
{
return a * b;
}
static void Main(string[] args)
{
Func<double, double, double> MyPow = Math.Pow;
Func<double, double, double> MyAdd = (a, b) => a + b;
Console.WriteLine(SomeMethod(2, 3, MyPow));
Console.WriteLine(SomeMethod(4, 5, MyAdd));
Console.WriteLine(SomeMethod(6, 7, MyMult));
}
Конечно,моя ошибка. Не учел, что нужно для MyAdd ввести 2 параметра, т.е
должно быть
MyPow(2, MyAdd(4, 5))
и все работает(только сегодня и догадался)