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

Работа с полями

13.05.2017, 08:27. Показов 934. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Есть класс с набором полей. Мне нужно объединить эти поля в массив или list. Прошу помощи в этой задаче.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
    public class varclass
    {
        public object param1 { get; set; }
        public object param2 { get; set; }
        public object param3 { get; set; }
        public object param4 { get; set; }
        public object param5 { get; set; }
        public object param6 { get; set; }
        public object param7 { get; set; }
     }

Пробовал объединить их в list в конструкторе
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
        public List<object> ListParams { get; set; }
        public void InitList()
        {
            ListParams = new List<object>();
            ListParams.Add(param1);
            ListParams.Add(param2);
            ListParams.Add(param3);
            ListParams.Add(param4);
            ListParams.Add(param5);
            ListParams.Add(param6);
            ListParams.Add(param7);
        }

Но когда обращаешься к отдельному полю, а не ко всему листу, поле выдает ошибку 'null'
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2017, 08:27
Ответы с готовыми решениями:

Работа с текстовыми полями
Как перевести значение в текстовом поле в число, чтобы при нажатии на кнопку значения из 2 текстовых полей суммировались или вычитались, а...

работа с полями
Здравствуйте. существует общая форма с кнопками при нажатии на которых открываются разные запросы. И ниже поле в котором они должны...

Работа с символьными полями
Здравствуйте, уважаемые. Только начал изучать язык SQL-запросов по книге Мартина Грубера &quot;Понимание SQL&quot; и завис на таком...

14
17 / 14 / 6
Регистрация: 21.04.2009
Сообщений: 65
13.05.2017, 11:08
Вызови метод "InitList" сразу после создания экземпляра класса, или переделай его в конструктор.
Перед тем как обращаться к параметрам, желательно им присвоить какое-нибудь значение (иначе будет выводить пустую строку).
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
    class Program
    {
        public class varclass
        {
            public object param1 { get; set; }
            public object param2 { get; set; }
            public object param3 { get; set; }
            public object param4 { get; set; }
            public object param5 { get; set; }
            public object param6 { get; set; }
            public object param7 { get; set; }
 
            public List<object> ListParams { get; set; }
            public void InitList()
            {
                ListParams = new List<object>();
                ListParams.Add(param1=1);
                ListParams.Add(param2=2);
                ListParams.Add(param3=3);
                ListParams.Add(param4=4);
                ListParams.Add(param5="adsfaf");
                ListParams.Add(param6);
                ListParams.Add(param7="afd");
            }
        }
 
        static void Main(string[] args)
        {
            varclass vcls = new varclass();
            vcls.InitList();
            Console.WriteLine("Вызов параметра непосредственно {0}", vcls.param1);
            Console.WriteLine("Вызов параметра из списка ListParams {0}", vcls.ListParams[1]);
            Console.WriteLine("Вызов пустого параметра из списка ListParams {0}", vcls.ListParams[5]); 
            Console.ReadKey();
        }
 
    }
0
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 5
13.05.2017, 12:59  [ТС]
А возможно ли поменять значения поля param1 используя лист?
0
Life Builder
 Аватар для sk007
531 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,755
13.05.2017, 13:16
Цитата Сообщение от EugeneNoskov Посмотреть сообщение
А возможно ли поменять значения поля param1 используя лист?
ListParams[0] = 10; //для param 1
0
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 5
13.05.2017, 21:09  [ТС]
Цитата Сообщение от sk007 Посмотреть сообщение
ListParams[0] = 10; //для param 1
Не пашет

Добавлено через 2 часа 20 минут
В общем, благодарю за ответ, но решил задачу по другому.
Кликните здесь для просмотра всего текста
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
    struct WrapParam
    {
        public object Param1 { get; set; }
        public object Param2 { get; set; }
        public object Param3 { get; set; }
        public object Param4 { get; set; }
        public object Param5 { get; set; }
        public object Param6 { get; set; }
 
        public WrapParam(object param1)
        {
            this.Param1 = param1;
            this.Param2 = null;
            this.Param3 = null;
            this.Param4 = null;
            this.Param5 = null;
            this.Param6 = null;
        }
        public WrapParam(object param1,object param2)
        {
            this.Param1 = param1;
            this.Param2 = param2;
            this.Param3 = null;
            this.Param4 = null;
            this.Param5 = null;
            this.Param6 = null;
        }
        public WrapParam(object param1, object param2,object param3)
        {
            this.Param1 = param1;
            this.Param2 = param2;
            this.Param3 = param3;
            this.Param4 = null;
            this.Param5 = null;
            this.Param6 = null;
        }
        public WrapParam(object param1, object param2, object param3,object param4)
        {
            this.Param1 = param1;
            this.Param2 = param2;
            this.Param3 = param3;
            this.Param4 = param4;
            this.Param5 = null;
            this.Param6 = null;
        }
        public WrapParam(object param1, object param2, object param3, object param4,object param5)
        {
            this.Param1 = param1;
            this.Param2 = param2;
            this.Param3 = param3;
            this.Param4 = param4;
            this.Param5 = param5;
            this.Param6 = null;
        }
        public WrapParam(object param1, object param2, object param3, object param4, object param5,)
        {
            this.Param1 = param1;
            this.Param2 = param2;
            this.Param3 = param3;
            this.Param4 = param4;
            this.Param5 = param5;
            this.Param6 = null;
        }
 
        public WrapParam(object[] MassParam)
        {
            this.Param1 = null;
            this.Param2 = null;
            this.Param3 = null;
            this.Param4 = null;
            this.Param5 = null;
            this.Param6 = null;
            switch (MassParam.Length)
            {
                case 1:
                    this.Param1 = MassParam[0];
                    this.Param2 = null;
                    this.Param3 = null;
                    this.Param4 = null;
                    this.Param5 = null;
                break;
                case 2:
                    this.Param1 = MassParam[0];
                    this.Param2 = MassParam[1];
                    this.Param3 = null;
                    this.Param4 = null;
                    this.Param5 = null;
                    break;
                case 3:
                    this.Param1 = MassParam[0];
                    this.Param2 = MassParam[1];
                    this.Param3 = MassParam[2];
                    this.Param4 = null;
                    this.Param5 = null;
                    break;
                case 4:
                    this.Param1 = MassParam[0];
                    this.Param2 = MassParam[1];
                    this.Param3 = MassParam[2];
                    this.Param4 = MassParam[3];
                    this.Param5 = null;
                    break;
                case 5:
                    this.Param1 = MassParam[0];
                    this.Param2 = MassParam[1];
                    this.Param3 = MassParam[2];
                    this.Param4 = MassParam[3];
                    this.Param5 = MassParam[4];
                    break;
                case 6:
                    this.Param1 = MassParam[0];
                    this.Param2 = MassParam[1];
                    this.Param3 = MassParam[2];
                    this.Param4 = MassParam[3];
                    this.Param5 = MassParam[4];
                    this.Param6 = MassParam[5];
                    break;
            }
 
        }
    }


Добавлено через 29 секунд
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
    struct WrapParam
    {
        public object Param1 { get; set; }
        public object Param2 { get; set; }
        public object Param3 { get; set; }
        public object Param4 { get; set; }
        public object Param5 { get; set; }
        public object Param6 { get; set; }
 
        public WrapParam(object param1)
        {
            this.Param1 = param1;
            this.Param2 = null;
            this.Param3 = null;
            this.Param4 = null;
            this.Param5 = null;
            this.Param6 = null;
        }
        public WrapParam(object param1,object param2)
        {
            this.Param1 = param1;
            this.Param2 = param2;
            this.Param3 = null;
            this.Param4 = null;
            this.Param5 = null;
            this.Param6 = null;
        }
        public WrapParam(object param1, object param2,object param3)
        {
            this.Param1 = param1;
            this.Param2 = param2;
            this.Param3 = param3;
            this.Param4 = null;
            this.Param5 = null;
            this.Param6 = null;
        }
        public WrapParam(object param1, object param2, object param3,object param4)
        {
            this.Param1 = param1;
            this.Param2 = param2;
            this.Param3 = param3;
            this.Param4 = param4;
            this.Param5 = null;
            this.Param6 = null;
        }
        public WrapParam(object param1, object param2, object param3, object param4,object param5)
        {
            this.Param1 = param1;
            this.Param2 = param2;
            this.Param3 = param3;
            this.Param4 = param4;
            this.Param5 = param5;
            this.Param6 = null;
        }
        public WrapParam(object param1, object param2, object param3, object param4, object param5,)
        {
            this.Param1 = param1;
            this.Param2 = param2;
            this.Param3 = param3;
            this.Param4 = param4;
            this.Param5 = param5;
            this.Param6 = null;
        }
 
        public WrapParam(object[] MassParam)
        {
            this.Param1 = null;
            this.Param2 = null;
            this.Param3 = null;
            this.Param4 = null;
            this.Param5 = null;
            this.Param6 = null;
            switch (MassParam.Length)
            {
                case 1:
                    this.Param1 = MassParam[0];
                    this.Param2 = null;
                    this.Param3 = null;
                    this.Param4 = null;
                    this.Param5 = null;
                break;
                case 2:
                    this.Param1 = MassParam[0];
                    this.Param2 = MassParam[1];
                    this.Param3 = null;
                    this.Param4 = null;
                    this.Param5 = null;
                    break;
                case 3:
                    this.Param1 = MassParam[0];
                    this.Param2 = MassParam[1];
                    this.Param3 = MassParam[2];
                    this.Param4 = null;
                    this.Param5 = null;
                    break;
                case 4:
                    this.Param1 = MassParam[0];
                    this.Param2 = MassParam[1];
                    this.Param3 = MassParam[2];
                    this.Param4 = MassParam[3];
                    this.Param5 = null;
                    break;
                case 5:
                    this.Param1 = MassParam[0];
                    this.Param2 = MassParam[1];
                    this.Param3 = MassParam[2];
                    this.Param4 = MassParam[3];
                    this.Param5 = MassParam[4];
                    break;
                case 6:
                    this.Param1 = MassParam[0];
                    this.Param2 = MassParam[1];
                    this.Param3 = MassParam[2];
                    this.Param4 = MassParam[3];
                    this.Param5 = MassParam[4];
                    this.Param6 = MassParam[5];
                    break;
            }
 
        }
    }
0
Life Builder
 Аватар для sk007
531 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,755
13.05.2017, 21:09
Цитата Сообщение от EugeneNoskov Посмотреть сообщение
Не пашет
Не досмотрел, в мейне
C#
1
vcls.param1 = 2;
а внутри класса
C#
1
2
3
ListParams[0] = 10; //для param 1
//или
param1 = 2;
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
13.05.2017, 21:40
EugeneNoskov,
Ничего не делающий класс из 121 строк. Это серьезная заявка
0
13.05.2017, 22:02

Не по теме:

внушает8-)

0
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 5
15.05.2017, 08:40  [ТС]
Это прост обёртка
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
15.05.2017, 09:18
Цитата Сообщение от EugeneNoskov Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
public WrapParam(object param1, object param2, object param3, object param4, object param5,)
 {
 this.Param1 = param1;
 this.Param2 = param2;
 this.Param3 = param3;
 this.Param4 = param4;
 this.Param5 = param5;
 this.Param6 = null;
 }
чем-то напомнило поделие известного разработчика реальной многопоточности
C#
1
2
3
4
5
6
7
public object Synchronous( 
Func<object,object,object,object,object   ,object   ,object  ,object, object  , object , object  , object, object  , object, object, object, object>   func,
 
object argument1,     object argument2,     object argument3,     object argument4   ,
object argument5,     object argument6 ,    object argument7,     object argument8  ,
object argument9,     object argument10 ,  object argument11 ,  object argument12 ,
object argument13 ,  object argument14 ,  object argument15 ,  object argument16)
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
15.05.2017, 10:03
Цитата Сообщение от aquaMakc Посмотреть сообщение
чем-то напомнило поделие известного разработчика реальной многопоточности
топик стартеру есть куда расти
Кстати, откуда это?

Цитата Сообщение от EugeneNoskov Посмотреть сообщение
Это прост обёртка
Во-первых, объясните зачем вам обращаться к свойствам через массив? Обрисуйте задачу.
Во-вторых, если уж очень хочется обращаться к свойствам по индексу, то может просто сделать индексатор?
C#
1
public object this[int i]{get{...}set{...}}
В-третьих, не нужно вот этого всего набора конструкторов. Если уж хочется в конструктор передавать набор свойств, то можно обойтись одним конструктором:
C#
1
2
3
4
5
public WrapParam(params object[] args)
{
   for(int i=0;i<args.Length;i++)
      this[i] = args[i];
}
0
15.05.2017, 10:07

Не по теме:

Цитата Сообщение от Storm23 Посмотреть сообщение
Кстати, откуда это?
Непризнаный гений делился с нами мудростью

0
15.05.2017, 10:08

Не по теме:

aquaMakc, о, госпади...

0
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 5
16.05.2017, 16:54  [ТС]
Ну блин. Сорри, что я за пол года выучил так мало. А задача вот в чем. У меня есть консоль, в неё вводятся данные типа [команда] [параметр1] [параметр2] ... [параметрN]. Есть несколько функций которые лежат в dll. В них по заданной команде отправляются эти параметры. (Количество команд в функциях разное.). обращение к функциям я реализовал через func<string,object[]>. Ну и когда количество входящих функций перевалило за 4 я задумался об обёртке.
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
16.05.2017, 16:59
EugeneNoskov, 95% вероятность, что можно сделать проще. Если знать что конкретно ты делаешь и чего хочешь добиться (ключевой вопрос - зачем).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.05.2017, 16:59
Помогаю со студенческими работами здесь

Работа с полями integer
Здравствуйте. У меня есть 3 поля типа integer (f1,f2,f3), я хочу чтобы у меня было вычисляемое поле типа varchar, вида: f1;f2;f3 . И это...

Работа с полями класса
class Account { public: float getBalance() { return Balance; } void setBalance(float&amp; b) { Balance = b; } ...

Работа С Rtf Полями.
Доброго времени суток! Прошу помочь решить задачку, как хранить историю изменения полей. Вообщем у меня получилось сохранять только 2-й...

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

Работа с полями TpFibDataSet
Доброго времени суток помогите решить такой вопрос: есть база данных, в ней таблица, в которой есть поле типа blob BLOB...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru