Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
1

Передача функции в параметры на вход другой функции

25.12.2015, 11:12. Показов 811. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
подскажите как передать функцию в параметром другой функции, раньше функции были с одинаковыми параметрами и передавал через делегат
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public delegate void Recieve(string mes);
public class Funcii
{
    public static Recieve f1=prostFunc1;
    public static Recieve f2=prostFunc2; 
}
private void MainFunc(Recieve res)
{
    //что то делаю
    res();
}
public void Func1()
{
    MainFunc(f1);
}
public void Func2()
{
    MainFunc(f2);
}
изменилось количество параметрров в функциях идуших через делегат к примеру в f1 параметры (string) в f2 параметры (string, int, double)
как их теперь передать в MainFunc
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2015, 11:12
Ответы с готовыми решениями:

Передача функции, делегата другой функции с параметрами
Здравствуйте, Подскажите пожалуйста, есть ли возможность вызвать функцию класса, указав в...

Передача функции как параметр другой функции
Можно ли сделать вот так: Сама функция: void test(void first(), void second()); { if...

Передача функции в качестве аргумента другой функции
в книге Харви и Пол Дейтл нашел следующий вариант решения задачи, передачи функции в качестве...

Передача матрицы в параметры функции
Почему в данном случае оба случая синтаксически допустимы? Ведь в f1 компилятор не будет ничего...

5
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
25.12.2015, 12:30 2
Ну значит второй делегат нужен, либо привести его к такому виду, чтобы в него можно было запихать что угодно(параметр типа object,но лучше этого не делать без надобности). Какой вообще смысл подавать куда-то метод, параметры которого заранее неизвестны?
0
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
25.12.2015, 12:46  [ТС] 3
Какой вообще смысл подавать куда-то метод, параметры которого заранее неизвестны?
параметры при вызове известны проблема в том что в 1-ом случае 1 параметр во 2-ом 3 параметра
а делегат для упрощения что бы избежать кучи IFов
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
25.12.2015, 13:10 4
Ну так-если у вас делегат принимает 1 параметр типа string, то вы никак не можете присвоить ему метод, который принимает другие параметры. Делайте разные делегаты для разного количества параметров, либо один делегат, принимающий object, а потом из этого objectа все извлекайте(второй вариант не рекомендуется, потому что приведет к трудночитаемости и запутанности кода).
1
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
25.12.2015, 16:29  [ТС] 5
Я тоже думал над object ом но надеюсь найти более красивое решение
0
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
27.12.2015, 04:49  [ТС] 6
Какие варианты еще возможны?
0
27.12.2015, 04:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2015, 04:49
Помогаю со студенческими работами здесь

Передача аргументов функции и параметры
Здравствуйте, никак не могу написать правильно параметры функции prntls string...

Передача в параметры функции указателя на функцию
Здравствуйте, хочу написать функцию, которая измеряла бы время выполнения любой функции func, где...

Передача элементов двумерного массива в параметры функции
Подскажите. Есть к примеру матрица int mat4; и ее нужно передать в параметры функции. Как это...

Передача данных в параметры функции из html-страницы
Добрый вечер. Не могу понять, как мне передать из input-поля данные в параметр функции. <input...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru