Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
 Аватар для alspav
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 41

Реорганизовать код: вызовы методов в зависимости от условий

16.07.2015, 15:45. Показов 3552. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
Опыт в программировании небольшой, код получается достаточно раздутый, написал конструкцию достаточно простую, но кажется что её можно оформить более лаконично подскажите пожалуйста как это сделать:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 private double[] td = new double[14];
        public int TDOUT (ref double[] IN,string pair)
        {
            td = IN; //записывааем исходные значения
            if (pair=="pw")
            {
                int temp = PW();
                if (temp == 0)
                {
                    IN = td;
                    return temp;
                }
                else return temp;
            }
            if (pair == "pst")
            {
                int temp = PST();
                if (temp == 0)
                {
                    IN = td;
                    return temp;
                }
                else return temp;
            }
            if (pair == "tw")
            {
                int temp = TW();
                if (temp == 0)
                {
                    IN = td;
                    return temp;
                }
                else return temp;
            }
            if (pair == "tst")
            {
                int temp = TST();
                if (temp == 0)
                {
                    IN = td;
                    return temp;
                }
                else return temp;
            }
            if (pair == "pt")
            {
                int temp = PT();
                if (temp == 0)
                {
                    IN = td;
                    return temp;
                }
                else return temp;
            }
            if (pair == "ph")
            {
                int temp = PH();
                if (temp == 0)
                {
                    IN = td;
                    return temp;
                }
                else return temp;
            }
            return 2;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.07.2015, 15:45
Ответы с готовыми решениями:

Вызовы методов из разных потоков
Вдруг внезапно встал вопрос по вызову методов из разных потоков. Мне казалось что такой проблемы быть не должно но она почему-то есть. Есть...

Управляемый цикл через вызовы методов класса
Предположим есть такой класс: class A: def __init__(self, elem): self.elem = elem def push(self): ...

Программа работает, но не получается реорганизовать код
Собственно говоря, само задание(см. скрин) Я хочу убрать метод и поле NOK с класса Number, так как нецелесообразно получается, хочу...

25
Заблокирован
17.07.2015, 14:37
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от alspav Посмотреть сообщение
Подскажи пожалуйста с какой целью к полю структуры добавляется { get; set; }, ведь насколько я понимаю в них и так можно писать если стоит public?
alspav, публичные поля это не хорошо, поэтому обычно используют свойства. Из msdn: Свойство — это член, предоставляющий гибкий механизм для чтения, записи или вычисления значения частного (private) поля.
По ссылкам более подробно:
https://msdn.microsoft.com/ru-... s7x04.aspx
https://msdn.microsoft.com/ru-... 84054.aspx
1
 Аватар для alspav
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 41
17.07.2015, 15:01  [ТС]
Идея понятна, в полном смысле ошибкой не является, но неправильно для безопасности кода. Спасибо.

Добавлено через 18 минут
Может если не затруднит подскажите тогда как правильно сделать конструктор для структуры ТТ, так как если только делаю так
C#
1
2
3
default:
                    temp.error = 1;
                    return temp;
пишет что ошибка так как переменной не присвоено значение, из чего я делаю вывод, что для структуры нужен конструктор создаваемый по умолчанию тут не подходит.
структура:
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
struct TT
    {
        public int error;
        public double P { get; set; }//значение давления
        public double T { get; set; }//значение температуры
        public double h { get; set; }//значение энтальпии
        public string PasheState { get; set; }//фазовое состояние
        public double Po { get; set; } //плотность
        public double S { get; set; } //энтропия
        public double Cp { get; set; }//изобарная теплоемкость
        public double Cv { get; set; }//изохорная теплоемкость
        public double u { get; set; }//внутренняя энергия
        public double Wz { get; set; }//скорость звука в среде
        public double mu { get; set; }//динамическая вязкость
        public double v { get; set; }//кинематическая вязкость
        public double lamda { get; set; }//теплопроводность
        public string ExcessAbsoluteP { get; set; }//избыточное или абсолютное давление используется в расчетах
        public string KelCelT { get; set; }//значение заданное в измерении температуры
        public override string ToString()
        {
            return string.Format("{0};{1}\n", ExcessAbsoluteP,
                string.Join(";", P, T, KelCelT, h, PasheState, Po, S, Cp, Cv, u, Wz, mu, v, lamda));
        }
    }
0
Заблокирован
17.07.2015, 15:09
Лучший ответ Сообщение было отмечено alspav как решение

Решение

Цитата Сообщение от alspav Посмотреть сообщение
из чего я делаю вывод, что для структуры нужен конструктор создаваемый по умолчанию тут не подходит.
alspav, подходит, но его тоже нужно "вызвать":
C#
1
TT temp = new TT();
Можно переписать метод следующим образом:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 public TT TDOUT(string pair)
        {
            switch (pair)
            {
                case "pw":
                    return PW();
                case "pst":
                    return PST();
                case "tw":
                    return TW();
                case "tst":
                    return TST();
                case "pt":
                    return PT();
                case "ph":
                    return PH();
                default:
                    return new TT { error = 1 };
            }
        }
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
17.07.2015, 15:38
alspav, только в ООП стоит исключения бросать, а не возвращать коды ошибок.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 public TT TDOUT(string pair)
        {
            switch (pair)
            {
                case "pw":
                    return PW();
                case "pst":
                    return PST();
                case "tw":
                    return TW();
                case "tst":
                    return TST();
                case "pt":
                    return PT();
                case "ph":
                    return PH();
                default:
                    throw new ArgumentException();
            }
        }
0
 Аватар для alspav
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 41
17.07.2015, 15:42  [ТС]
С обработкой исключений я пока не знаком, согласен что так наверно правильнее, но из за одного локального случая разбираться неохото, если даш ссылку буду признателен обязательно почитаю.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
17.07.2015, 16:09
alspav, ну например:
https://msdn.microsoft.com/ru-... 73160.aspx

Добавлено через 4 минуты
Слева есть менюшка (ну или снизу) со связанными разделами, для более полной информации можно их почитать.

Но на самом деле много слов по простой теме, где ошибка, кидаем исключение (как в примере выше), а в коде ловим
C#
1
2
3
4
5
6
7
8
try
{
   TDOUT("asgas");
}
catch (ArgumentException ex)
{
   MessageBox.Show("Error: " + ex.Message);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.07.2015, 16:09
Помогаю со студенческими работами здесь

Что происходит, когда объект не успевает обрабатывать вызовы методов?
Здравствуйте! Есть объект А и объекты В1, В2, В3. Когда объекты В обращаются к А, вызывая какие-нибудь методы А и объект А не успевает...

Проверка достаточных условий сходимости методов
Проверьте пожалуйста Задание =Предусмотреть проверку достаточных условий сходимости методов =Вычислить невязку полученного...

Автозаполнение поля в зависимости от условий
Здравствуйте! Есть 3 таблицы: СРМ (ИД, Название, стоимость) Описание (ИД, ценовая категория, ИД_СРМ) Ценовая категория (ИД,...

Вывод разметки в зависимости от условий
Здравствуйте уважаемые форумчане. Не подскажите как грамотно генерировать разметку, в зависимости от прав в базе данных. Я лично со своим...

Появление объектов в зависимости от условий
Расскажите, пожалуйста, как сделать такое: Например, есть комбобокс с двумя строками (умножить и площадь круга). при выборе умножения,...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru