Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 02.10.2019
Сообщений: 90

Arraylist не удается обратиться к методу

12.03.2021, 14:04. Показов 453. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такая проблема.

Код класса
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Collections;
 
namespace PI_Lab_7
{
    class Pi_Lab_2
    {
        [System.ComponentModel.DisplayName("Фамилия")]
        public string surname { get; set; }
        [System.ComponentModel.DisplayName("Имя")]
        public string name { get; set; }
        [System.ComponentModel.DisplayName("Бег")]
        public int run { get; set; }
        [System.ComponentModel.DisplayName("Прыжок")]
        public int jump { get; set; }
        [System.ComponentModel.DisplayName("Стрельба")]
        public int shoot { get; set; }
        [System.ComponentModel.DisplayName("Плавание")]
        public int swim { get; set; }
 
        public Pi_Lab_2(string s, string n, int r, int j, int sh, int sw)
        {
            surname = s;
            name = n;
            run = r;
            jump = j;
            shoot = sh;
            swim = sw;
        }
 
        public Pi_Lab_2()
        {
            surname = "";
            name = "";
            run = 0;
            jump = 0;
            shoot = 0;
            swim = 0;
        }
 
        public int Sum() => run + jump + shoot + swim;
        
    }
}
Код Формы
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;
using System.IO;
using System.Globalization;
 
namespace PI_Lab_7
{
    public partial class Form1 : Form
    {
        ArrayList list;
 
    
        public Form1()
        {
            InitializeComponent();
         
        }
 
        
 
        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.ReadOnly = true;
        }
 
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void создатьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            list = new ArrayList();
            Pi_Lab_2 m = new Pi_Lab_2();
            list.Add(m); 
            MessageBox.Show("Коллекция создана");
        }
 
        private void просмотретьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            dataGridView1.ReadOnly = true;
            dataGridView1.DataSource = list;
        }
 
        private void редактироватьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            dataGridView1.ReadOnly = false;
            dataGridView1.DataSource = list;
        }
 
        private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (saveFileDialog1.ShowDialog() == DialogResult.Cancel)
                return;
            // получаем выбранный файл
            string filename = saveFileDialog1.FileName;
            // сохраняем текст в файл
            FileStream file = new FileStream($"{filename}.txt", FileMode.Create);
            using (StreamWriter sw = new StreamWriter(file))
            {
                foreach (Pi_Lab_2 p in list)
                {
                    string s = $"{p.name} {p.surname} {p.run.ToString()} {p.jump.ToString()} {p.shoot.ToString()} {p.swim.ToString()}";
                    sw.WriteLine(s);
                    
                }
            }  
            MessageBox.Show("Коллекция сохранена");
        }
 
        private void загрузитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
           
 
            if (openFileDialog1.ShowDialog() == DialogResult.Cancel)
                return;
            // получаем выбранный файл
            string filename = openFileDialog1.FileName;
            list = new ArrayList();
            using (StreamReader sr = new StreamReader(filename, System.Text.Encoding.Default))
            {
                string line;
 
                while ((line = sr.ReadLine()) != null)
                {
                    string[] subs = line.Split(' ');
 
                    Pi_Lab_2 m = new Pi_Lab_2(subs[0], subs[1], Convert.ToInt32(subs[2]), Convert.ToInt32(subs[3]), Convert.ToInt32(subs[4]), Convert.ToInt32(subs[5]));
 
                    list.Add(m);
 
                    
                }
                MessageBox.Show("Коллекция загружена");
            }
        }
 
        private void случайнаяКоллекцияToolStripMenuItem_Click(object sender, EventArgs e)
        {
            list = new ArrayList();
 
            string[] sur = { "Галкин", "Зотов", "Чернышев", "Бондарев", "Зуев", "Иванов", "Молчанов", "Фадеев", "Туманов", "Смирнов", "Поляков", "Казаков", "Королев", "Потапов", "Овсянников", "Антонов", "Кузьмин", "Тихомиров", "Фролов", "Кочетков" };
 
            string[] m_n = { "Артем", "Александр", "Эмиль", "Марк", "Иван", "Георгий", "Михаил", "Матвей", "Елисей", "Мирослав", "Даниил", "Артур", "Владимир", "Денис", "Егор", "Адам", "Виктор", "Дмитрий", "Илья", "Николай" };
            string[] f_n = { "Александра", "Мария", "Виктория", "Вера", "Софья", "София", "Ксения", "Арина", "Анастасия", "Екатерина", "Анна", "Дарья", "Вероника", "Полина", "Элинна", "Елена", "Алиса", "Ульяна", "Роза" };
 
            Random rdn = new Random();
 
            for (int i = 0; i < 100; i++)
            {
                int v0 = rdn.Next(0, 100);
                int v1 = rdn.Next(0, 100);
                int v2 = rdn.Next(0, 100);
                int v3 = rdn.Next(0, 100);
 
                if (rdn.Next(1, 2) == 1)
                {
                    string s1 = sur[rdn.Next(0, sur.Length)];
                    string s2 = m_n[rdn.Next(0, m_n.Length)];
                    Pi_Lab_2 m = new Pi_Lab_2(s1, s2, v0, v1, v2, v3);
                    list.Add(m);
 
                }
                else
                {
                    string s1 = sur[rdn.Next(0, sur.Length)] + "а";
                    string s2 = f_n[rdn.Next(0, f_n.Length)];
                    Pi_Lab_2 m = new Pi_Lab_2(s1, s2, v0, v1, v2, v3);
                    list.Add(m);
                }
            }
            MessageBox.Show("Коллекция сгенерирована");
        }
 
        private void сортировкаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < list.Count - 1; i++)
                for (int j = i + 1; j < list.Count; j++)
                   // if (list[i].Sum() > list[j].Sum())
                    { 
                        
                    }
                
        }
    }
}
Вот тут не хочет обращаться к методу
C#
1
if (list[i].Sum() > list[j].Sum())
Почему?

Добавлено через 14 минут
Я так понял потому что я обращаюсь к типу object. Как мне преобразовать его к типу моего класса?

Добавлено через 9 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void сортировкаToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
            for (int i = 0; i < list.Count - 1; i++)
                for (int j = i + 1; j < list.Count; j++)
                {
                    Pi_Lab_2 a = list[i] as Pi_Lab_2;
                    Pi_Lab_2 b = list[j] as Pi_Lab_2;
                    if (a.Sum() > b.Sum())
                    {
                        object c = list[i];
                        list[i] = list[j];
                        list[j] = c;
 
                    }
                }
                
        }
Вроде как сделал, но что то не работает. Что не так?

Добавлено через 9 секунд
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void сортировкаToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
            for (int i = 0; i < list.Count - 1; i++)
                for (int j = i + 1; j < list.Count; j++)
                {
                    Pi_Lab_2 a = list[i] as Pi_Lab_2;
                    Pi_Lab_2 b = list[j] as Pi_Lab_2;
                    if (a.Sum() > b.Sum())
                    {
                        object c = list[i];
                        list[i] = list[j];
                        list[j] = c;
 
                    }
                }
                
        }
Вроде как сделал, но что то не работает. Что не так?

Добавлено через 54 минуты
Вроде сделал, но такое ощущение, что криво. Если будут предложения по оптимизации кода, буду очень рад и благодарен
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
private void сортировкаToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
            for (int i = 0; i < list.Count - 1; i++)
            {
                Pi_Lab_2 a = list[i] as Pi_Lab_2;
                
                for (int j = i + 1; j < list.Count; j++)
                {
 
                    Pi_Lab_2 b = list[j] as Pi_Lab_2;
 
                    if (a.Sum() < b.Sum())
                    {
                        list[i] = b;
                        list[j] = a;
 
                        a = list[i] as Pi_Lab_2;
                        b = list[j] as Pi_Lab_2;
                    }
                }
            }
            dataGridView1.Refresh();
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2021, 14:04
Ответы с готовыми решениями:

Передача ArrayList в качестве параметра методу, и в дальнейшем получение свойств объектов которые хранятся в ArrayList
Всем привет. Задача следующая: a. Есть классы Fruit -&gt; Apple, Orange;(больше фруктов не надо) b. Класс Box в который можно складывать...

Обратиться к методу
Ребят создал программку для выявления макс и мин из 4-ех чисел,но не могу обратиться к методу,подскажите где ошибки?? using System; ...

Обратиться к двумерному ArrayList
Приветствую. Программа обрабатывает данные, которые ей передает другая программа. Эти данным могут быть разными. Пока я знаю, что это...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.03.2021, 14:04
Помогаю со студенческими работами здесь

Обратиться к методу находящемуся в UserControl
К примеру в форме есть кнопка &quot;Рассчитать&quot; при её нажатии нужно обратится к методу Raschet1 находящемуся в UserControl1 P.S. Raschet1...

Обратиться к методу библиотеки DLL
Здравствуйте. Имеется библиотека DLL, построенная в MATLAB. Данная библиотека содержит один метод с двумя параметрами. Если добавить...

Пытаюсь обратиться к несуществующему методу
Учу php по книжке, там был небольшой пример, переписал его со своими именованиями. Перепроверил, по стурктуре все вроде бы нормально, но...

Как обратиться к методу объекта?
static classA **mas; static int l = 0; mas = new Guest*; ifstream f(&quot;gs.txt&quot;); if (f) { while (!f.eof()) { f &gt;&gt; p &gt;&gt; name; ...

Как обратиться к методу класса?
Собственно сабж private function fly(e:Event):void { this.x -= speedX; this.y -= speedY; if...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru