Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Делегаты -передача метода, как параметра

34K
18 ноября 2012 года
zna926
64 / / 23.03.2012
C# Windows Form.
Есть 2 делегата, у каждого по 1 статическому методу.
Метод 1. 2 параметра, результат - возведение в степень
1- число типа Double
2 - метод 2
Метод 2. 2 параметра, результат - операция, например, сложение, умножение.. 2 чисел
Оба параметра типа Double.
Подскажите простейший код
297
18 ноября 2012 года
koodeer
1.2K / / 02.05.2009
 
Код:
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));
34K
18 ноября 2012 года
zna926
64 / / 23.03.2012
Здравствуйте, koodeer!
Спасибо за ответ. К сожалению, это не то. Ведь мы должны передать результат из метода
MyAdd в качестве параметра в метод MyPow, т.е должно быть MyPow(2, (4+5)).
Это я уже делал. Думаю, что есть другое решение, чтобы окончательный результат можно было бы записать ввиде одной строки.
С наилучшими пожеланиями.
297
18 ноября 2012 года
koodeer
1.2K / / 02.05.2009
Я не понял. Приведи тогда конкретный пример, как именно это должно выглядеть в виде одной строки. Я постараюсь привести код.
Это не оно: 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));
}
34K
18 ноября 2012 года
zna926
64 / / 23.03.2012
Добрый вечер,koodeer!
Конечно,моя ошибка. Не учел, что нужно для MyAdd ввести 2 параметра, т.е
должно быть
MyPow(2, MyAdd(4, 5))
и все работает(только сегодня и догадался)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог