Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 3
1

Как лучше в функцию передавать много параметров?

18.12.2014, 11:50. Показов 4506. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть функции что-то типа:
C#
1
2
3
4
5
6
7
public void ChangeFilter(string region = "", string week = "", 
            bool InclEPay = false, string EPday = "", string car = "", string verifPointName = "",
            bool getReport = true, int delay = 0, bool include = false, bool matchWithPrlInv = true,
            bool showAllTSOP = false, string appByAgency = "All", string appFac = "All", string inclCr = null)
{
......
}
Как-то не красиво выглядит, как можно это переделать? может использовать dictionary или hashtable в качестве параметров функции или создавать отдельный тип данных и передавать его?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2014, 11:50
Ответы с готовыми решениями:

Как лучше передавать много текста на сервер в обработчик php
Вопрос первый: ПравилаСообщение перемещено в новую тему:...

Как лучше передавать параметры в метод/функцию
Здравствуйте! У меня возник вопрос, посредством какого оператора передавать параметры в функцию...

Как лучше передавать значения в функцию? Ссылки vs указатели
Всем доброго времени суток. Уважаемые гуру, подскажите пожалуйста, как лучше передавать значения в...

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

5
0 / 0 / 1
Регистрация: 06.02.2014
Сообщений: 6
18.12.2014, 12:09 2
Можно структуру использовать
0
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
18.12.2014, 12:11 3
Для красоты и наглядности можно просто подравнять
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void ChangeFilter(
            string region          = "",
            string week            = "",
            bool   InclEPay        = false,
            string EPday           = "",
            string car             = "",
            string verifPointName  = "",
            bool   getReport       = true, 
            int    delay           = 0,
            bool   include         = false,
            bool   matchWithPrlInv = true,
            bool   showAllTSOP     = false,
            string appByAgency     = "All",
            string appFac          = "All",
            string inclCr          = null)
{
 
}
Или передавать параметры при помощи класса
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void foo()
{
    ChangeFilter(new MyClass() { region = "123", InclEPay = true, matchWithPrlInv = false});
}
public class MyClass
{
    public string region          = "";
    public string week            = "";
    public bool   InclEPay        = false;
    public string EPday           = "";
    public string car             = "";
    public string verifPointName  = "";
    public bool   getReport       = true;
    public int    delay           = 0;
    public bool   include         = false;
    public bool   matchWithPrlInv = true;
    public bool   showAllTSOP     = false;
    public string appByAgency     = "All";
    public string appFac          = "All";
    public string inclCr          = null;       
}
public void ChangeFilter(MyClass mc)
{
}
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
18.12.2014, 12:29 4
Имхо, структура - лучший вариант. По себе знаю, когда пишешь больше 5 параметров, начинаешь путаться.
0
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
18.12.2014, 12:37 5
Цитата Сообщение от tezaurismosis Посмотреть сообщение
По себе знаю, когда пишешь больше 5 параметров, начинаешь путаться
Чтобы не путаться можно вызвать так
C#
1
ChangeFilter(region: "123", EPday: "456", include: true);
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
18.12.2014, 12:53 6
maxillion, можно, но многословно. Благо немногие методы в .NET вызываются более чем с пятью аргументами.
0
18.12.2014, 12:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2014, 12:53
Помогаю со студенческими работами здесь

Наследование vs Композиция vs Агрегация: что лучше выбрать? Как лучше передавать объекты в функции?
Добрый день!! Дело вот в чём, я хочу создать класс, внутри которого будут созданы объекты...

Что лучше передавать из функции в функцию — массив переменных или переменные по одной?
Что лучше передавать из функции в функцию - массив переменных или переменные по одной?

Заменить все элементы, попадающие в интервал [a, b], нулем. Границы интервала передавать в функцию в качестве параметров
Нужно составить функцию, которая будет заменять все элементы в промежутке 0. #include...

Как удобнее передавать большое количество параметров?
В продолжение этой темы. Я пишу WCF сервис и у меня очень много функций с похожими аргументами....


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

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