Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
.NET 4.x

Не определен конструктор без параметров. при десериализации json

06.07.2019, 12:27. Показов 4198. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Вот код Десерелизации.
C#
1
2
3
4
5
static void LoadJsonListInfoPrograms(string fileName)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            Programs = serializer.Deserialize<AL7_Class_Programs>(File.ReadAllText(fileName));
        }
И ошибка - не определен конструктор без параметров.
Вот код класса:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Serializable]
    class AL7_Class_Programs
    {
        public AL7_Class_Programs()
        {
            IndexSelectProgram = 0;
            Programs = new List<AL7_Class_Program>();
        }
 
        public AL7_Class_Programs(int indexSelectProgram)
        {
            IndexSelectProgram = indexSelectProgram;
            Programs = new List<AL7_Class_Program>();
        }
 
        public int IndexSelectProgram { get; set; }
 
        public List<AL7_Class_Program> Programs { get; set; }
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.07.2019, 12:27
Ответы с готовыми решениями:

Ошибка формата при десериализации json
Json: Я так понимаю projects это массив Классы в C#

При десериализации объекта типа DateTime с формата json происходит смещение на один день назад
Перед применением сохранения даты в файл используя System.Web.Script.Serialization.JavaScriptSerializer json решил проверить вообще...

Определить конструктор без параметров, конструктор с одним параметром, конструктор с двумя параметрами, деструктор
Создать класс «матрица». Данный класс должен содержать элементы типа int, определяющие число строк, столбцов и состояние ошибки. Определить...

15
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
06.07.2019, 13:51
Класс непубличный
0
3 / 3 / 0
Регистрация: 17.05.2016
Сообщений: 20
07.07.2019, 03:39
у тебя же в ошибке явно написано, что в классе отсутствует конструктор без параметров.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[Serializable]
    public class AL7_Class_Programs
    {
        public AL7_Class_Programs() { }
 
        public AL7_Class_Programs()
        {
            IndexSelectProgram = 0;
            Programs = new List<AL7_Class_Program>();
        }
 
        public AL7_Class_Programs(int indexSelectProgram)
        {
            IndexSelectProgram = indexSelectProgram;
            Programs = new List<AL7_Class_Program>();
        }
 
        public int IndexSelectProgram { get; set; }
 
        public List<AL7_Class_Program> Programs { get; set; }
    }
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
07.07.2019, 10:42
Leon Sadeness, Параметры - это то, что передается в конструктор, а не его тело. Конструктор без параметров у автора как раз есть
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
09.07.2019, 15:07  [ТС]
Цитата Сообщение от Toros1992 Посмотреть сообщение
Leon Sadeness, Параметры - это то, что передается в конструктор, а не его тело. Конструктор без параметров у автора как раз есть
Проблема была в том что хоть и у класса AL7_Class_Programs есть конструктор без параметров но у других а именно AL7_Class_Program конструктора без параметров нгебыло.
Но это нелогично. Просто не пойцму логики зачем я должен создавать конструктор без параметров если я использовать буду конструктор с параметрами. И ладно если взять AL7_Class_Programs. Я все равно туда передаю -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
39
40
41
42
43
44
45
    [Serializable]
    class AL7_Class_TypeProgram
    {
        public AL7_Class_TypeProgram()
        {
 
        }
 
        public AL7_Class_TypeProgram(string name, string link, string outFileName, string officialSite)
        {
            Name = name;
            Link = link;
            OutFileName = outFileName;
            OfficialSite = officialSite;
        }
 
        public string Name { get; set; }
 
        public string Link { get; set; }
 
        public string OutFileName { get; set; }
 
        public string OfficialSite { get; set; }
    }
 
    [Serializable]
    class AL7_Class_Program
    {
        public AL7_Class_Program()
        {
 
        }
 
        public AL7_Class_Program(string name, string officialSite)
        {
            Name = name;
            OfficialSite = officialSite;
            TypePrograms = new List<AL7_Class_TypeProgram>();
        }
 
        public string Name { get; set; }
        public string OfficialSite { get; set; }
 
        public List<AL7_Class_TypeProgram> TypePrograms { get; set; }
    }
Это както нелогично создавать пустой конструктор лишь чтобы компилятор неругался на то что ему нужен конструктор без параметров
0
1338 / 918 / 264
Регистрация: 08.08.2014
Сообщений: 2,759
09.07.2019, 15:12
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Это както нелогично
Логично.
Если в классе не объявлено ни одного конструктора, то автоматически (при компиляции) создаётся конструктор без параметров, который ничего не делает.

Если же программист явно указал, что при создании объекта класса требуются определённые входные данные и явно НЕ задал конструктор без параметров, значит у него были на то причины, например, он хочет гарантировать, что объект всегда будет корректно инициализирован определённым состоянием через переданные параметры и не будет никакой возможности создать его в обход этого.

* а десериализатор JSON не может использовать конструктор с параметрами, т.к. он попросту не знает, что именно туда нужно передавать.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
09.07.2019, 15:17  [ТС]
Цитата Сообщение от kotelok Посмотреть сообщение
Логично.
Если в классе не объявлено ни одного конструктора, то автоматически (при компиляции) создаётся конструктор без параметров, который ничего не делает.
Если же программист явно указал, что при создании объекта класса требуются определённые входные данные и явно НЕ задал конструктор без параметров, значит у него были на то причина, например, он хочет гарантировать, что объект всегда будет корректно инициализирован определённым состоянием через переданные параметры и не будет никакой возможности создать его в обход этого.
* а десериализатор JSON не может использовать конструктор с параметрами, т.к. он попросту не знает, что именно туда нужно передавать.
Это я какбы понял. Но все равнго както некрасиво создавать совсем пустые конструкторы. Как сделать хотябы чтобы при вызове конструктора с параметрами вызывался автоматически и без параметров и например в пустоми конструкторе прописать создание элементов а уже в конструкторе с параметрами присваивать элементам значения. Хотя вот AL7_Class_TypeProgram() прийдется оставить пустым ибо в этом классе попросту нет элементов требуемых их создания.
0
1338 / 918 / 264
Регистрация: 08.08.2014
Сообщений: 2,759
09.07.2019, 15:22
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
AL7_Class_TypeProgram()
По сути, конструкторы в этом классе не имеют особого смысла при таком раскладе, т.е. можно убрать оба и с точки зрения внешнего использования класса ничего не изменится, т.к. из-за наличия конструктора без парметров, внешний код может свободно создавать объект, инициализируая любые его свойства на выбор, т.е. может обходить те ограничения по обязательной инциализации свойств, которые изначально накладывал конструктор с параметрами в отсутствии конструктора без параметров.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
09.07.2019, 15:44  [ТС]
Цитата Сообщение от kotelok Посмотреть сообщение
По сути, конструкторы в этом классе не имеют особого смысла при таком раскладе, т.е. можно убрать оба и с точки зрения внешнего использования класса ничего не изменится, т.к. из-за наличия конструктора без парметров, внешний код может свободно создавать объект, инициализируая любые его свойства на выбор, т.е. может обходить те ограничения по обязательной инциализации свойств, которые изначально накладывал конструктор с параметрами в отсутствии конструктора без параметров.
Не совсем понял. Как это обойтись без конструкторов.
0
1338 / 918 / 264
Регистрация: 08.08.2014
Сообщений: 2,759
09.07.2019, 15:47
Alexandr_7
Убрать оба конструктора.
Компилятор создат конструктор по умолчанию без параметров, который будет использоваться десериализатором JSON.

А для явного создания объектов из кода использовать быструю инициализацию свойств, которая, имхо, куда более читаема и понятна, чем вызов конструктора с неименованными параметра. При этом VS умеет подсказывать, какие свойства уже были инициализированы, а какие нет:
через конструктор
C#
1
var tp = new AL7_Class_TypeProgram("zzzz", "yyyy", "fufel.txt", "http://aaa.bbb");
без конструктора
C#
1
2
3
4
5
6
7
    var tp = new AL7_Class_TypeProgram()
    {
        Name = "zzzz",
        Link = "yyyy",
        OutFileName = "fufel.txt",
        OfficialSite = "http://aaa.bbb"
    };
1
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
09.07.2019, 16:54  [ТС]
А да точно. Забыл об этом. Точнее не то что забыл просто использовать в голову не пришло. Спасибо.

Добавлено через 55 минут
Цитата Сообщение от kotelok Посмотреть сообщение
А для явного создания объектов из кода использовать быструю инициализацию свойств, которая, имхо, куда более читаема и понятна, чем вызов конструктора с неименованными параметра. При этом VS умеет подсказывать, какие свойства уже были инициализированы, а какие нет:
Ну на счет читаемости то вот 2 одинаковых варианта
через конструктор
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
#region Add K-Lite Codec Pack
 
                Programs.Programs.Add(new AL7_Class_Program(
                    "K-Lite Codec Pack (MPC)",
                    "https://www.codecguide.com/download_kl.htm"));
 
                Programs.Programs[Programs.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram(
                    "K-Lite Codec Pack Mega",
                    "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Mega.exe",
                    "K-Lite_Codec_Pack_1500_Mega.exe",
                    "https://www.codecguide.com/download_k-lite_codec_pack_mega.htm"));
 
                Programs.Programs[Programs.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram(
                    "K-Lite Codec Pack Full",
                    "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Full.exe",
                    "K-Lite_Codec_Pack_1500_Full.exe",
                    "https://www.codecguide.com/download_k-lite_codec_pack_full.htm"));
 
                Programs.Programs[Programs.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram(
                    "K-Lite Codec Pack Standard",
                    "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Standard.exe",
                    "K-Lite_Codec_Pack_1500_Standard.exe",
                    "https://www.codecguide.com/download_k-lite_codec_pack_standard.htm"));
 
                Programs.Programs[Programs.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram(
                    "K-Lite Codec Pack Basic",
                    "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Basic.exe",
                    "K-Lite_Codec_Pack_1500_Basic.exe",
                    "https://www.codecguide.com/download_k-lite_codec_pack_basic.htm"));
 
                Programs.Programs[Programs.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram(
                    "K-Lite Codec Pack Update",
                    "http://files2.codecguide.com/klcp_update_1499_20190608.exe",
                    "klcp_update_1499_20190608.exe",
                    "https://www.codecguide.com/klcp_update.htm"));
 
                Programs.Programs[Programs.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram(
                    "K-Lite Codec Pack Beta Mega",
                    "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Mega.exe",
                    "K-Lite_Codec_Pack_1503_Mega.exe",
                    "https://www.codecguide.com/klcp_beta.htm"));
 
                Programs.Programs[Programs.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram(
                    "K-Lite Codec Pack Beta Full",
                    "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Full.exe",
                    "K-Lite_Codec_Pack_1503_Full.exe",
                    "https://www.codecguide.com/klcp_beta.htm"));
 
                Programs.Programs[Programs.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram(
                    "K-Lite Codec Pack Beta Standard",
                    "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Standard.exe",
                    "K-Lite_Codec_Pack_1503_Standard.exe",
                    "https://www.codecguide.com/klcp_beta.htm"));
 
                Programs.Programs[Programs.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram(
                    "K-Lite Codec Pack Beta Basic",
                    "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Basic.exe",
                    "K-Lite_Codec_Pack_1503_Basic.exe",
                    "https://www.codecguide.com/klcp_beta.htm"));
 
                #endregion

без конструктора
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#region Add K-Lite Codec Pack
 
                ListLinksPrograms.Programs.Add(new AL7_Class_Program(){
                    Name = "K-Lite Codec Pack (MPC)",
                    OfficialSite = "https://www.codecguide.com/download_kl.htm"
                });
 
                ListLinksPrograms.Programs[ListLinksPrograms.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K - Lite Codec Pack Mega",
                    Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Mega.exe",
                    OutFileName = "K-Lite_Codec_Pack_1500_Mega.exe",
                    OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_mega.htm"
                });
 
                ListLinksPrograms.Programs[ListLinksPrograms.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Full",
                    Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Full.exe",
                    OutFileName = "K-Lite_Codec_Pack_1500_Full.exe",
                    OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_full.htm"
                });
 
                ListLinksPrograms.Programs[ListLinksPrograms.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Standard",
                    Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Standard.exe",
                    OutFileName = "K-Lite_Codec_Pack_1500_Standard.exe",
                    OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_standard.htm"
                });
 
                ListLinksPrograms.Programs[ListLinksPrograms.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Basic",
                    Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Basic.exe",
                    OutFileName = "K-Lite_Codec_Pack_1500_Basic.exe",
                    OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_basic.htm"
                });
 
                ListLinksPrograms.Programs[ListLinksPrograms.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Update",
                    Link = "http://files2.codecguide.com/klcp_update_1499_20190608.exe",
                    OutFileName = "klcp_update_1499_20190608.exe",
                    OfficialSite = "https://www.codecguide.com/klcp_update.htm"
                });
 
                ListLinksPrograms.Programs[ListLinksPrograms.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Beta Mega",
                    Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Mega.exe",
                    OutFileName = "K-Lite_Codec_Pack_1503_Mega.exe",
                    OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                });
 
                ListLinksPrograms.Programs[ListLinksPrograms.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Beta Full",
                    Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Full.exe",
                    OutFileName = "K-Lite_Codec_Pack_1503_Full.exe",
                    OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                });
 
                ListLinksPrograms.Programs[ListLinksPrograms.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Beta Standard",
                    Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Standard.exe",
                    OutFileName = "K-Lite_Codec_Pack_1503_Standard.exe",
                    OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                });
 
                ListLinksPrograms.Programs[ListLinksPrograms.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Beta Basic",
                    Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Basic.exe",
                    OutFileName = "K-Lite_Codec_Pack_1503_Basic.exe",
                    OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                });
 
                #endregion

Лично для меня оба читаемые варианты. Просто во 2 варианте количество коду больше.

Добавлено через 3 минуты
Хотя 2 вариант удобнее. Но правдо мне теперь прийдется перелохмачивать уже все добавленное под новый вариант.
0
1338 / 918 / 264
Регистрация: 08.08.2014
Сообщений: 2,759
09.07.2019, 17:40
Alexandr_7
Ну тут уже на вкус и цвет. В первом варианте, при такой записи, все значения параметров выравнены по левому краю, что само по себе легче для восприятия (по крайней мере в данном случае). Во втором - сразу понятно, какой параметр за что отвечает, особенно когда смысл параметра сходу не очевиден из названия.

С другой стороны - если вдруг у вас добавится ещё одно обязательное свойство, то после добавления его в конструктор вы сразу на этапе компиляции обнаружите все места, где его нужно дописать в конструктор, т.е. гарантированно нигде не забудете.

В общем, тут нет однозначного варианта, от сиутации и личных предпочтений зависит.
0
3 / 3 / 0
Регистрация: 17.05.2016
Сообщений: 20
11.07.2019, 18:14
Alexandr_7, Так может тебе пересмотреть архитектуру классов?
Сущность что ты пытаешься сериализировать сделай моделью, не надо туда закладывать логику. Пусть она будет тупо содержать данные.
А как эти данные обрабатывать, будут решать сервисы.

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
[Serializable]
public class DataModel
{
        public int IntData;
        public string StringData;
        public int[] IntArrData;
}
 
public interface IDataService
{
        DataModel {get; set;}
}
 
public class TimeServiceData : IDataService
{
        public DataModel {get; set;}
 
        public TimeServiceData() 
        {
                //init
        }
 
        public void Method1()
        {
                //logic
        }
}
 
public class SendServiceData : IDataService
{
        public DataModel {get; set;}
 
        public SendServiceData() 
        {
                //init
        }
 
        public void Method1()
        {
                //logic
        }
}
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
12.07.2019, 11:57  [ТС]
Цитата Сообщение от Leon Sadeness Посмотреть сообщение
Alexandr_7, Так может тебе пересмотреть архитектуру классов?
Сущность что ты пытаешься сериализировать сделай моделью, не надо туда закладывать логику. Пусть она будет тупо содержать данные.
А как эти данные обрабатывать, будут решать сервисы.
Не понял тебя.
Мне эта структура для хранения данных. В данном случае хранить ссылки на часто используемые программы. Хочу сделать прогу которая будет хранить часто используемые прогораммы с возможностью их быстрой скачки. Чтобы не лезть каждый раз в интернет ну или если и лезть то чтобы.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
12.07.2019, 12:30
Alexandr_7, по моему так еще более читабельно получается... А строк больше только из-за фигурных скобок...

А по хорошему данные нужно хранить не в коде, а во внешнем файле (json/xml), и тогда вообще количество строк будет сведено до минимума...

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
66
67
68
69
70
71
72
73
74
75
           #region Add K-Lite Codec Pack
 
            ListLinksPrograms.Programs.Add(new AL7_Class_Program
            {
                Name = "K-Lite Codec Pack (MPC)",
                OfficialSite = "https://www.codecguide.com/download_kl.htm",
                TypePrograms = new List<AL7_Class_TypeProgram>
                {
                    new AL7_Class_TypeProgram
                    {
                        Name = "K - Lite Codec Pack Mega",
                        Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Mega.exe",
                        OutFileName = "K-Lite_Codec_Pack_1500_Mega.exe",
                        OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_mega.htm"
                    },
                    new AL7_Class_TypeProgram
                    {
                        Name = "K-Lite Codec Pack Full",
                        Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Full.exe",
                        OutFileName = "K-Lite_Codec_Pack_1500_Full.exe",
                        OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_full.htm"
                    },
                    new AL7_Class_TypeProgram
                    {
                        Name = "K-Lite Codec Pack Standard",
                        Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Standard.exe",
                        OutFileName = "K-Lite_Codec_Pack_1500_Standard.exe",
                        OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_standard.htm"
                    },
                    new AL7_Class_TypeProgram
                    {
                        Name = "K-Lite Codec Pack Basic",
                        Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Basic.exe",
                        OutFileName = "K-Lite_Codec_Pack_1500_Basic.exe",
                        OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_basic.htm"
                    },
                    new AL7_Class_TypeProgram
                    {
                        Name = "K-Lite Codec Pack Update",
                        Link = "http://files2.codecguide.com/klcp_update_1499_20190608.exe",
                        OutFileName = "klcp_update_1499_20190608.exe",
                        OfficialSite = "https://www.codecguide.com/klcp_update.htm"
                    },
                    new AL7_Class_TypeProgram
                    {
                        Name = "K-Lite Codec Pack Beta Mega",
                        Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Mega.exe",
                        OutFileName = "K-Lite_Codec_Pack_1503_Mega.exe",
                        OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                    },
                    new AL7_Class_TypeProgram
                    {
                        Name = "K-Lite Codec Pack Beta Full",
                        Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Full.exe",
                        OutFileName = "K-Lite_Codec_Pack_1503_Full.exe",
                        OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                    },
                    new AL7_Class_TypeProgram
                    {
                        Name = "K-Lite Codec Pack Beta Standard",
                        Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Standard.exe",
                        OutFileName = "K-Lite_Codec_Pack_1503_Standard.exe",
                        OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                    },
                    new AL7_Class_TypeProgram
                    {
                        Name = "K-Lite Codec Pack Beta Basic",
                        Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Basic.exe",
                        OutFileName = "K-Lite_Codec_Pack_1503_Basic.exe",
                        OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                    }
                }
            });
 
            #endregion
Если изменить расположение фигурных скобок, то количество строк почти сравняется с вашим первым вариантом...

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
            #region Add K-Lite Codec Pack
 
            ListLinksPrograms.Programs.Add(new AL7_Class_Program {
                Name = "K-Lite Codec Pack (MPC)",
                OfficialSite = "https://www.codecguide.com/download_kl.htm",
                TypePrograms = new List<AL7_Class_TypeProgram> {
                    new AL7_Class_TypeProgram {
                        Name = "K - Lite Codec Pack Mega",
                        Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Mega.exe",
                        OutFileName = "K-Lite_Codec_Pack_1500_Mega.exe",
                        OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_mega.htm"
                    },
                    new AL7_Class_TypeProgram {
                        Name = "K-Lite Codec Pack Full",
                        Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Full.exe",
                        OutFileName = "K-Lite_Codec_Pack_1500_Full.exe",
                        OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_full.htm"
                    },
                    new AL7_Class_TypeProgram {
                        Name = "K-Lite Codec Pack Standard",
                        Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Standard.exe",
                        OutFileName = "K-Lite_Codec_Pack_1500_Standard.exe",
                        OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_standard.htm"
                    },
                    new AL7_Class_TypeProgram {
                        Name = "K-Lite Codec Pack Basic",
                        Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Basic.exe",
                        OutFileName = "K-Lite_Codec_Pack_1500_Basic.exe",
                        OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_basic.htm"
                    },
                    new AL7_Class_TypeProgram {
                        Name = "K-Lite Codec Pack Update",
                        Link = "http://files2.codecguide.com/klcp_update_1499_20190608.exe",
                        OutFileName = "klcp_update_1499_20190608.exe",
                        OfficialSite = "https://www.codecguide.com/klcp_update.htm"
                    },
                    new AL7_Class_TypeProgram {
                        Name = "K-Lite Codec Pack Beta Mega",
                        Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Mega.exe",
                        OutFileName = "K-Lite_Codec_Pack_1503_Mega.exe",
                        OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                    },
                    new AL7_Class_TypeProgram {
                        Name = "K-Lite Codec Pack Beta Full",
                        Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Full.exe",
                        OutFileName = "K-Lite_Codec_Pack_1503_Full.exe",
                        OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                    },
                    new AL7_Class_TypeProgram {
                        Name = "K-Lite Codec Pack Beta Standard",
                        Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Standard.exe",
                        OutFileName = "K-Lite_Codec_Pack_1503_Standard.exe",
                        OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                    },
                    new AL7_Class_TypeProgram {
                        Name = "K-Lite Codec Pack Beta Basic",
                        Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Basic.exe",
                        OutFileName = "K-Lite_Codec_Pack_1503_Basic.exe",
                        OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                    }
                }
            });
 
            #endregion
1
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
12.07.2019, 13:20  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
А по хорошему данные нужно хранить не в коде, а во внешнем файле (json/xml), и тогда вообще количество строк будет сведено до минимума...
Эти данные и так хранятся JSON файле.
При загрузке программы данные загржаются в классы. Если классы пустые после загрузке то добавляются стандартные данные.
А грузить из Json только то что нужно то во 1 без понятия как. Во вторых это сложнее. В третьих а зачем? Сыкономить пару сотен байт оперативки то времени я потрачу больше чем от этого будет какаято польза. Я понимаю если бы это была графическая информация но это текстовая информации. Тем более очень мелкая текставая информация так что не требуется ее загружать только при выборе. К томмуже все программы (ссылки на программы) должны отображаться сразу в списке а значит их всяко разно нужно грузить сразу все.

Добавлено через 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
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
using System;
using System.Collections.Generic;
 
namespace AL7_LLP_Library.SRC
{
    [Serializable]
    public class AL7_Class_TypeProgram
    {
        public string Name { get; set; }
 
        public string Link { get; set; }
 
        public string OutFileName { get; set; }
 
        public string OfficialSite { get; set; }
    }
 
    [Serializable]
    public class AL7_Class_Program
    {
        public AL7_Class_Program()
        {
            TypePrograms = new List<AL7_Class_TypeProgram>();
        }
 
        public int IndexSelectTypeProgram { get; set; }
 
        public string Name { get; set; }
        public string OfficialSite { get; set; }
 
        public List<AL7_Class_TypeProgram> TypePrograms { get; set; }
    }
 
    public class AL7_Class_LLPSettings
    {
        public AL7_Class_LLPSettings()
        {
            IndexSelectProgram = -1;
            Programs = new List<AL7_Class_Program>();
        }
 
        public int IndexSelectProgram { get; set; }
 
        public List<AL7_Class_Program> Programs { get; set; }
    }
}
public static int CreateListLinksPrograms()
        {
            #region Инциализация и загрузка данных
 
            LoadJsonListInfoPrograms();
 
            #endregion
 
            #region Добавления всех ссылок на все нужные и часто используемые программы
 
            if (LLPSettings.Programs.Count <= 0)
            {
                #region Add K-Lite Codec Pack
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = 0,
                    Name = "K-Lite Codec Pack (MPC)",
                    OfficialSite = "https://www.codecguide.com/download_kl.htm"
                    
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K - Lite Codec Pack Mega",
                    Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Mega.exe",
                    OutFileName = "K-Lite_Codec_Pack_1500_Mega.exe",
                    OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_mega.htm"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Full",
                    Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Full.exe",
                    OutFileName = "K-Lite_Codec_Pack_1500_Full.exe",
                    OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_full.htm"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Standard",
                    Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Standard.exe",
                    OutFileName = "K-Lite_Codec_Pack_1500_Standard.exe",
                    OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_standard.htm"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Basic",
                    Link = "http://files2.codecguide.com/K-Lite_Codec_Pack_1500_Basic.exe",
                    OutFileName = "K-Lite_Codec_Pack_1500_Basic.exe",
                    OfficialSite = "https://www.codecguide.com/download_k-lite_codec_pack_basic.htm"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Update",
                    Link = "http://files2.codecguide.com/klcp_update_1499_20190608.exe",
                    OutFileName = "klcp_update_1499_20190608.exe",
                    OfficialSite = "https://www.codecguide.com/klcp_update.htm"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Beta Mega",
                    Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Mega.exe",
                    OutFileName = "K-Lite_Codec_Pack_1503_Mega.exe",
                    OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Beta Full",
                    Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Full.exe",
                    OutFileName = "K-Lite_Codec_Pack_1503_Full.exe",
                    OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Beta Standard",
                    Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Standard.exe",
                    OutFileName = "K-Lite_Codec_Pack_1503_Standard.exe",
                    OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "K-Lite Codec Pack Beta Basic",
                    Link = "http://files2.codecguide.com/beta/K-Lite_Codec_Pack_1503_Basic.exe",
                    OutFileName = "K-Lite_Codec_Pack_1503_Basic.exe",
                    OfficialSite = "https://www.codecguide.com/klcp_beta.htm"
                });
 
                #endregion
 
                #region Add Xnview
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = 0,
                    Name = "XnView",
                    OfficialSite = "https://www.xnview.com/en/"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "XnView Minimal Setup",
                    Link = "https://download.xnview.com/XnView-win-small.exe",
                    OutFileName = "XnView-win-small.exe",
                    OfficialSite = "https://www.xnview.com/en/xnview/#downloads"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "XnView Minimal Zip",
                    Link = "https://download.xnview.com/XnView-win-small.zip",
                    OutFileName = "XnView-win-small.zip",
                    OfficialSite = "https://www.xnview.com/en/xnview/#downloads"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "XnView Standard Setup",
                    Link = "https://download.xnview.com/XnView-win.exe",
                    OutFileName = "XnView-win.exe",
                    OfficialSite = "https://www.xnview.com/en/xnview/#downloads"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "XnView Standard Zip",
                    Link = "https://download.xnview.com/XnView-win.zip",
                    OutFileName = "XnView-win.zip",
                    OfficialSite = "https://www.xnview.com/en/xnview/#downloads"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "XnView Extended Setup",
                    Link = "https://download.xnview.com/XnView-win-full.exe",
                    OutFileName = "XnView-win-full.exe",
                    OfficialSite = "https://www.xnview.com/en/xnview/#downloads"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "XnView Extended Zip",
                    Link = "https://download.xnview.com/XnView-win-full.zip",
                    OutFileName = "XnView-win-full.zip",
                    OfficialSite = "https://www.xnview.com/en/xnview/#downloads"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "XnView MP Windows 32 bit",
                    Link = "https://download.xnview.com/XnViewMP-win.exe",
                    OutFileName = "XnViewMP-win.exe",
                    OfficialSite = "https://www.xnview.com/en/xnviewmp/"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "XnView MP Windows 64 bit",
                    Link = "https://download.xnview.com/XnViewMP-win-x64.exe",
                    OutFileName = "XnViewMP-win-x64.exe",
                    OfficialSite = "https://www.xnview.com/en/xnviewmp/"
                });
 
                #endregion
 
                #region Add qBittorrent
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = 0,
                    Name = "qBittorrent",
                    OfficialSite = "https://www.qbittorrent.org/"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "qBittorrent Windows",
                    Link = "https://www.fosshub.com/qBittorrent.html?dwl=qbittorrent_4.1.6_setup.exe",
                    OutFileName = "qBittorrent 4.1.6_setup.exe",
                    OfficialSite = "//www.fosshub.com/qBittorrent.html"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "qBittorrent Windows x64",
                    Link = "https://www.fosshub.com/qBittorrent.html?dwl=qbittorrent_4.1.6_x64_setup.exe",
                    OutFileName = "qBittorrent 4.1.6_x64_setup.exe",
                    OfficialSite = "https://www.fosshub.com/qBittorrent.html"
                });
 
                #endregion
 
                #region Add WinRAR
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = 0,
                    Name = "WinRAR",
                    OfficialSite = "https://www.rarlab.com/download.htm"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "WinRAR x86 (32 bit) 5.71",
                    Link = "https://www.rarlab.com/rar/wrar571.exe",
                    OutFileName = "wrar571.exe",
                    OfficialSite = "https://www.rarlab.com/download.htm"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "WinRAR x64 (64 bit) 5.71",
                    Link = "https://www.rarlab.com/rar/winrar-x64-571.exe",
                    OutFileName = "winrar-x64-571.exe",
                    OfficialSite = "https://www.rarlab.com/download.htm"
                });
 
                #endregion
 
                #region Add 7zip
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = 0,
                    Name = "7-Zip",
                    OfficialSite = "https://www.7-zip.org/"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "7-Zip 32-bit x86",
                    Link = "https://www.7-zip.org/a/7z1900.exe",
                    OutFileName = "7z1900.exe",
                    OfficialSite = "https://www.7-zip.org/"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "7-Zip 64-bit x64",
                    Link = "https://www.7-zip.org/a/7z1900-x64.exe",
                    OutFileName = "7z1900-x64.exe",
                    OfficialSite = "https://www.7-zip.org/"
                });
 
                #endregion
 
                #region Add Only Office
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = -1,
                    Name = "Only Office",
                    OfficialSite = "https://www.onlyoffice.com/ru/download-desktop.aspx"
                });
 
                #endregion
 
                #region Add Office 2007 BE
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = -1,
                    Name = "Office 2007 BE",
                    OfficialSite = "https://drive.google.com/file/d/1pokqWh1LEM8r_fcVwdHCMXR-A4k3Mteq/view"
                });
 
                #endregion
 
                #region Add Skype Classic
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = 0,
                    Name = "Класический Скайп",
                    OfficialSite = "https://www.skype.com/ru/"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "Skype 8.48.0.51",
                    Link = "https://download.skype.com/s4l/download/win/Skype-8.48.0.51.exe",
                    OutFileName = "Skype-8.48.0.51.exe",
                    OfficialSite = "https://go.skype.com/windows.desktop.download"
                });
 
                #endregion
 
                #region Add AIMP
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = 0,
                    Name = "AIMP",
                    OfficialSite = "https://www.aimp.ru/"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "AIMP v4.51, build 2084",
                    Link = "http://aimp.su/storage/acc1353719050e5fa6f28e8d296078a4/aimp_4.51.2084.exe",
                    OutFileName = "aimp_4.51.2084.exe",
                    OfficialSite = "https://www.aimp.ru/?do=download&os=windows"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "AIMP v4.60 Beta 6, build 2133",
                    Link = "http://www.aimp.su/storage/9acf6c81c0906d672b2c12176fc11ac0/aimp_4.60.2133_beta_6_debug.exe",
                    OutFileName = "aimp_4.60.2133_beta_6_debug.exe",
                    OfficialSite = "https://www.aimp.ru/?do=download&os=windows"
                });
 
                #endregion
 
                #region Add Sumatra PDF
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = 0,
                    Name = "Sumatra PDF",
                    OfficialSite = "https://www.sumatrapdfreader.org/free-pdf-reader.html"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "Sumatra PDF 32 bit Installer",
                    Link = "https://www.sumatrapdfreader.org/dl/SumatraPDF-3.1.2-install.exe",
                    OutFileName = "SumatraPDF-3.1.2-install.exe",
                    OfficialSite = "https://www.sumatrapdfreader.org/download-free-pdf-viewer.html"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "Sumatra PDF 32 bit Portable version",
                    Link = "https://www.sumatrapdfreader.org/dl/SumatraPDF-3.1.2.zip",
                    OutFileName = "SumatraPDF-3.1.2.zip",
                    OfficialSite = "https://www.sumatrapdfreader.org/download-free-pdf-viewer.html"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "Sumatra PDF 64 bit Installer",
                    Link = "https://www.sumatrapdfreader.org/dl/SumatraPDF-3.1.2-64-install.exe",
                    OutFileName = "SumatraPDF-3.1.2-64-install.exe",
                    OfficialSite = "https://www.sumatrapdfreader.org/download-free-pdf-viewer.html"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "Sumatra PDF 64 bit Portable version",
                    Link = "https://www.sumatrapdfreader.org/dl/SumatraPDF-3.1.2-64.zip",
                    OutFileName = "SumatraPDF-3.1.2-64.zip",
                    OfficialSite = "https://www.sumatrapdfreader.org/download-free-pdf-viewer.html"
                });
 
                #endregion
 
                #region Add Adobe Flash Player
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = -1,
                    Name = "Adobe Flash Player",
                    OfficialSite = "https://get.adobe.com/ru/flashplayer/"
                });
 
                #endregion
 
                #region Add Open Shell
 
                LLPSettings.Programs.Add(new AL7_Class_Program()
                {
                    IndexSelectTypeProgram = 0,
                    Name = "Open Shell (Меню 7 для Windows 10)",
                    OfficialSite = "https://github.com/Open-Shell/Open-Shell-Menu"
                });
 
                LLPSettings.Programs[LLPSettings.Programs.Count - 1].TypePrograms.Add(new AL7_Class_TypeProgram()
                {
                    Name = "Open Shell (Меню 7 для Windows 10) 4.4.131",
                    Link = "https://github.com/Open-Shell/Open-Shell-Menu/releases/download/v4.4.131/OpenShellSetup_4_4_131.exe",
                    OutFileName = "OpenShellSetup_4_4_131.exe",
                    OfficialSite = "https://github.com/Open-Shell/Open-Shell-Menu/releases"
                });
 
                #endregion
            }
 
            #endregion
 
            #region Окончание
 
            if (LLPSettings.IndexSelectProgram < 0)
                LLPSettings.IndexSelectProgram = 0;
 
            return LLPSettings.Programs.Count;
 
            #endregion
        }
Добавлено через 7 минут
Цитата Сообщение от Someone007 Посмотреть сообщение
Если изменить расположение фигурных скобок, то количество строк почти сравняется с вашим первым вариантом...
А вот за это спасибо. Мне конечно лень переделыввать но для красоты переделаю чтобы уменьшить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2019, 13:20
Помогаю со студенческими работами здесь

При десериализации JSON из файла происходит ошибка
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Runtime.Serialization; using...

Ошибка при десериализации json файла в list
Здравствуйте. У меня проблема с десериализации. Вот таким способом я делаю: var json = new...

Spring REST, Hibernate. Сложности десериализации JSON при one-to-many
Всем добрый день. Возникла проблема, подходящее решение которой никак не нагуглю. Делаю REST API на Spring и Hibernate. При попытке...

Ошибка при десериализации Json с Web.Api в Xamarin.Android
Получаю объекты класса UserInfo. После хочу чтобы метод вернул мне только FirstName. Но выбивают эту ошибку при десериализации Json. ...

Конструктор без параметров
class stack { private: int top; // вершина стека int s; // массив в котором хранится стек public: stack (): top(0)...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru