Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462

Избавиться от повторения вызова одного и того же метода с одним меняющимся параметром

15.02.2015, 16:22. Показов 772. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        struct Marker
        {
            public static string chipValue= '\"' + "Value" + '\"';
            public static string chipElementInfo = '\"' + "ElementInfo" + '\"';
            public static string chipDescription = '\"' + "Description" + '\"';
        }
 
        private void ParseCadStarNetList(List<string> netList)
        {
            foreach (string line in netList)
            {
                if (line.Contains(Marker.chipValue))
                    UpdateChipNameAndValue(ChipValues, line, Marker.chipValue);
                if (line.Contains(Marker.chipElementInfo))
                    UpdateChipNameAndValue(ChipValues, line, Marker.chipElementInfo);
                if (line.Contains(Marker.chipDescription))
                    UpdateChipNameAndValue(ChipValues, line, Marker.chipDescription);
            }
            ...........................................
Задача: избавиться от тупого повторения вызова одного и того же метода с одним меняющимся параметром. Дело в том, что структура Marker дальше буде расширяться. До каких пределов, пока сказать трудно, но уже щас это выглядит просто отвратительно.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2015, 16:22
Ответы с готовыми решениями:

Ошибка вызова метода для блока с параметром
source_file.rb:18:in `&lt;main&gt;': undefined method `power' for main:Object (NoMethodError) #протоколирование def log s, someProc ...

Какова вероятность того, что за время 30 секунд, будет не менее одного вызова?
В течение часа коммутатор получает в среднем 40 вызовов. Какова вероятность того, что за время 30 секунд, будет не менее одного вызова?

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

3
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18294 / 14218 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
15.02.2015, 16:38
Злобный Зайц, например так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private static string[] Markers = new[] {
    '\"' + "Value" + '\"',
    '\"' + "ElementInfo" + '\"',
    '\"' + "Description" + '\"'
};
 
private void ParseCadStarNetList(List<string> netList)
{
    foreach (string line in netList)
    {
        foreach (string marker in Markers)
        {
            if (line.Contains(marker))
            {
                UpdateChipNameAndValue(ChipValues, line, marker);
            }
        }
    }
}
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
15.02.2015, 16:44
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
Как сделать более прилично?
для начала не создавать структур со статическими полями стрингов.
сделать класс с обычными открытыми свойствами трех этих полей.

если же это константы то нужно создать статический класс.

можно рефлексией пройтись по полям
или делать авто заполняемый шаблон в самой ide (это к псилону обращаться)

вот рефлексией

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private static void ParseCadStarNetList(List<string> netList)
        {
            foreach (string line in netList)
            {
                foreach (var field in typeof(Marker).GetFields())
                {
                    if(field.FieldType != typeof(String)) continue;
                    var value = (String)field.GetValue(null);
                    if (line.Contains(value))
                        UpdateChipNameAndValue(ChipValues, line, value);
                }
            }
        }
 
    public static class  Marker
    {
        public static string ChipValue = "\"Value\"";
        public static string ChipElementInfo = "\"ElementInfo\"";
        public static string ChipDescription = "\"Description\"";
    }
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
15.02.2015, 22:23
Злобный Зайц,
Также, как Metall_Version предложу рефлексию. Такой вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        struct Marker
        {
            public static string chipValue = '\"' + "Value" + '\"';
            public static string chipElementInfo = '\"' + "ElementInfo" + '\"';
            public static string chipDescription = '\"' + "Description" + '\"';
 
            public static List<string> ChipList()
            {
                List<string> list = new List<string>();
                foreach (var field in typeof(Marker).GetFields())
                    list .Add((String)field.GetValue(null));            
              return list;
            }           
        }
 
        private void ParseCadStarNetList(List<string> netList)
        {
            foreach (string line in netList)           
                foreach (string marker in Marker.ChipList())
                    if (line.Contains(marker))
                        UpdateChipNameAndValue(marker); 
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.02.2015, 22:23
Помогаю со студенческими работами здесь

Как обратиться к методу из другого метода внутри одного и того же класса
Доброго времени суток. Продолжаю изучение C#, и вот моя третья тема (или четвертая, за сегодня) с вопросом. А не получается вот, что... ...

Рефлексия, загрузка одного и того же метода из разных dll файлов, через 1 интерфейс
Доброе время суток, у меня возник спорный вопрос, существует 3 проекта: 1) Программа сортировщик, которая должна сортировать массив,...

Как правильно описать метод внутри другого метода одного и того же класса?
Извияюсь за возможно глупый вопрос, но ООП тема для меня новая.Вот так выглядел метод класса в начале: public function...

Проверить возможность вызова метода из другого метода
Всем привет. Тут возникла мысля, что было бы здорово отследить все возможные вызовы метода Foo() из другого определенного метода...

Как передать входящее значение одного метода класса на возврат в другой метод того же класса?
Я самый новейший новичок. Помогите.Как передать входящее значение (количество еды) метода feed класса Cat на возврат(return) в метод...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru