Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 3 / 2
Регистрация: 20.07.2014
Сообщений: 654

Использовать интерфейс/абстрактный класс для оптимизации

04.02.2020, 01:47. Показов 1041. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет
Как здесь лучше оптимизировать код, потому что повторяюсь.
Не хочется выносить повторение в отдельный метод и вызывать его внутри другого метода.
Как лучше сделать, может, пойти через интерфейс, абстрактный класс, синглтон...?
Любые варианты.

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
namespace JSONr
{
    public partial class Grid : Form
    {
        readonly string path = @"D:\dfv.json";
 
        public Ffff ()
        {
            InitializeComponent();
        }
 
        private void btn3_Click(object sender, EventArgs e)
        {
            string jsonString = String.Empty;
            jsonString = File.ReadAllText(path);
            IReadOnlyList<Auto> resultAuto = JsonConvert.DeserializeObject<IReadOnlyList<Auto>>(jsonString);
            var filteredData = resultAuto.Where(s => s.Displacement > 350);
            dataGridView1.DataSource = filteredData.ToList();
        }
 
        private void Grid_Load(object sender, EventArgs e)
        {
            string jsonString = String.Empty;
            jsonString = File.ReadAllText(path);
            IReadOnlyList<Auto> resultAuto = JsonConvert.DeserializeObject<IReadOnlyList<Auto>>(jsonString);
            dataGridView1.DataSource = resultAuto;
        }
 
        private void btn4_Click(object sender, EventArgs e)
        {
            string jsonString = String.Empty;
            jsonString = File.ReadAllText(path);
            IReadOnlyList<Auto> resultAuto = JsonConvert.DeserializeObject<IReadOnlyList<Auto>>(jsonString);
            var orderedData = resultAuto.OrderBy(s => s.Name);
            dataGridView1.DataSource = orderedData.ToList();
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2020, 01:47
Ответы с готовыми решениями:

Использовать абстрактный класс, статический класс, использовать: наследование, агрегирование, композицию
Добрый день. Нужна ваша помощь. Учусь в университете, задали придумать тему программы. в программе нужно использовать следующее:...

Абстрактный класс или Интерфейс
Не совсем понимаю для чего нужен абстрактный класс если есть интерфесы. Интерфейсы нужны для того что бы разделять обьекты по типу или...

Абстрактный класс и интерфейс (отличия)
Чем отличается абстрактный класс и интерфейс?

1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,073
Записей в блоге: 2
04.02.2020, 02:19
Цитата Сообщение от antoniogrid Посмотреть сообщение
Всем привет
Как здесь лучше оптимизировать код, потому что повторяюсь.
Не хочется выносить повторение в отдельный метод и вызывать его внутри другого метода.
Оптимально - вынести в другой метод.

Интерфейс - это и есть другой метод и нужен только для публичных членов.

Какие-то типы могут иметь смыл только, если надо сохранять какие-то постоянные значения.
А судя по коду их у вас нет.

Так что вынос трёх строк в отдельный метод.
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
namespace JSONr
{
    public partial class Grid : Form
    {
        readonly string path = @"D:\dfv.json";
 
        public Ffff ()
        {
            InitializeComponent();
        }
 
        private static IReadOnlyList<Auto> ReadAuto(string path, string jsonString)
        {
            string jsonString = String.Empty;
            jsonString = File.ReadAllText(path);
            return JsonConvert.DeserializeObject<IReadOnlyList<Auto>>(jsonString);
         }
 
        private void btn3_Click(object sender, EventArgs e)
           =>  dataGridView1.DataSource = ReadAuto(path, jsonString).Where(s => s.Displacement > 350).ToList();
        
 
        private void Grid_Load(object sender, EventArgs e)
           =>  dataGridView1.DataSource = ReadAuto(path, jsonString);
 
        private void btn4_Click(object sender, EventArgs e)
            => dataGridView1.DataSource = ReadAuto(path, jsonString).OrderBy(s => s.Name).ToList();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2020, 02:19
Помогаю со студенческими работами здесь

Когда может понадобиться и абстрактный класс и интерфейс?
Доброго времени суток! Собственно вопрос в заголовке. Я думал, что если есть абстракный класс, то в него можно уже заложить весь...

Интерфейс, абстрактный класс, виртуальный метод, производные классы
Создать интерфейс с методом вычисления суммы прогрессии. Создать абстрактный базовый класс Series с виртуальным методом вычисления j-ого...

Когда предпочтительнее использовать абстрактный класс в отношении к интерфейсу?
Мне известно назначение абстрактных классов и интерфейсов, но для полноты представления хотелось бы на конкретных примерах увидеть, когда...

Что использовать, класс или интерфейс?
вот банальный пример. пусть есть преподаватель и студент. самая простая общая их характеристика - фамилия, имя,отчество. В любом случае...

Создать абстрактный базовый класс для числовых типов
Создать абстрактный базовый класс Число с виртуальной функцией изменения знака числа. Создать производные классы: целое (int), вещественное...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru