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

Как использовать массив созданного класса?

06.10.2017, 10:21. Показов 3022. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь создать массив нового класса переменных и не получается, выдаёт ошибку. Помогите исправить:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyP
{
       public double X, Y;
}
 
private MyP[] Ps = new MyP[100];
 
private void MyCalc()
{
      int j=1;
      Ps[j].X = 1;
      //Ps.ElementAt(j).X = 1;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.10.2017, 10:21
Ответы с готовыми решениями:

Обращение к переменной созданного класса
Понимаю, что все уже изъезжено по 100 раз, но в упор не могу понять следующую вещь! У меня есть отдельный класс Main: using System; ...

Уникальный идентификатор созданного объекта класса
Задание. Составить описание класса для объектов-векторов, задаваемых одномерным массивом вещественных чисел типа double. Класс...

Проблема с присвоением объектов созданного класса
Задание было таким: решение задачи на оптимизацию симплекс методом. Рекомендовалось считать в простых дробях, и я решил при программной...

33
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,086
07.10.2017, 13:21
Студворк — интернет-сервис помощи студентам
SidNiko, это не догмы. Хотите быстро решить - хорошо знайте язык. Не хотите тратить время на изучение? Не жалуйтесь, что вам неудобно. Тут всё просто.
0
0 / 0 / 0
Регистрация: 06.10.2017
Сообщений: 11
07.10.2017, 13:23  [ТС]
Usaga, Хорошо) Всем спасибо за помощь!
0
.NET C#,ASP.NET MVC
Эксперт .NET
 Аватар для lvlkoo
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
07.10.2017, 13:46
А мне вот интересно стало, это в каком таком языке, при создания массива из элементов ссылочного типа компилятор сам обьекты создает? Разве в делфи так?
0
0 / 0 / 0
Регистрация: 06.10.2017
Сообщений: 11
07.10.2017, 14:00  [ТС]
lvlkoo,
Типа того, там то, что мы написали выглядело бы так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
type
  TMyP = record
      X,Y:extended;
  end;
  TPs = array of TMyP;
var
  Ps:TPs;
 
procedure MyCalc;
var
 i:integer;
begin
  for i:=0 to 100 do begin
     SetLength(Ps,i+1);
     Ps[i].X:=1;
  end;
end;
Применён динамический массив TPs = array of TMyP - без указания его длины, который является ссылочным
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18415 / 14346 / 5371
Регистрация: 17.03.2014
Сообщений: 29,032
Записей в блоге: 1
07.10.2017, 14:10
Лучший ответ Сообщение было отмечено SidNiko как решение

Решение

SidNiko, в C# можно точно также сделать если использовать struct (значимый тип) вместо class (ссылочный тип). Берем твой пример из первого сообщения, меняем class на struct и он работает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
struct MyP // !!!
{
       public double X, Y;
}
 
private MyP[] Ps = new MyP[100];
 
private void MyCalc()
{
      int j=1;
      Ps[j].X = 1;
      //Ps.ElementAt(j).X = 1;
}
То есть всё именно так как сказал Usaga - ты жалуешься на то в чем не разбираешься.

Цитата Сообщение от SidNiko Посмотреть сообщение
есть такие: совсем инженерная старая Slope; ближе к научно-исследовательским - Plaxis; такая интересная программа как SAS Planet.
Был в одной, как считается, из самых развитых стран, а там ребята на-полном серьёзе докладывались на брифинге как неделями скринят google/map, для них было откровением увидеть как со свободным нашим российским SAS Planet, любые картографические источники склеивются за минуту с нужным зумом, и при том уже с привязкой проекций.
И сам написал программы, которые работают просто невероятно, в них массивы из миллионов уравнений последовательно (по времени) в матрицах параллельно потоками решаются миллионы раз, с такой скоростью, что считалось это не возможно, и что нужно их разряжать треугольными сетками, и всё это благодаря эффективному языку.
И как это перечисление доказывает что "большинство написанных профессиональных инженерных программ написано на Delphi"?
1
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,086
07.10.2017, 14:11
SidNiko, насколько я понимаю, тут речь о массиве структур. А метод SetLength как раз выполняет переаллокацию. Т.е. ничего магического я тут не вижу.
0
0 / 0 / 0
Регистрация: 06.10.2017
Сообщений: 11
07.10.2017, 14:20  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
struct MyP
Это здорово, теперь ещё лучше стало, спасибо.

А перечисленные программы (Slope, Plaxis, SAS Planet), они все написаны на Delphi, и чувствуется, что их писали не профессиональные программисты, а профессионалы в своих областях, инженеры, которым просто нужно было решить свою задачу
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18415 / 14346 / 5371
Регистрация: 17.03.2014
Сообщений: 29,032
Записей в блоге: 1
07.10.2017, 14:25
SidNiko, других инженерных программ не существует?

Цитата Сообщение от SidNiko Посмотреть сообщение
и чувствуется, что их писали не профессиональные программисты, а профессионалы в своих областях, инженеры, которым просто нужно было решить свою задачу

Не по теме:

А MS Word, надо думать, писали профессиональные писатели.


Вариант что приложения писали профессиональные программисты которые консультировались с профессиональными инженерами ты не рассматриваешь потому что это противоречит твоей вере в Delphi?
1
07.10.2017, 14:32

Не по теме:

Цитата Сообщение от SidNiko Посмотреть сообщение
и чувствуется, что их писали не профессиональные программисты, а профессионалы в своих областях
А Photoshop писали художники?))

0
.NET C#,ASP.NET MVC
Эксперт .NET
 Аватар для lvlkoo
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
07.10.2017, 14:42
Цитата Сообщение от SidNiko Посмотреть сообщение
Типа того
Цитата Сообщение от SidNiko Посмотреть сообщение
type
TMyP = record
Совсем не типа.

Я спрашивал о ссылочних ТИПАХ, а тут у вас инициализация структуры, которая является значимым.
C# Тоже имеет структуры, как написали выше.

А о том что delphi это тоже ООП язык, и то что можно написать

Delphi
1
2
type
  TMyP = class
Вы наверно даже не подозривали. И в таком случае, нужо было бы ТАК ЖЕ как и в других языка, эти объекты инициализировать с помощью конструктора

Delphi
1
Ps[i] = TMyP.Create;
Опять же все упирается в ваше незнание.
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
07.10.2017, 15:14
Цитата Сообщение от lvlkoo Посмотреть сообщение
А мне вот интересно стало, это в каком таком языке, при создания массива из элементов ссылочного типа компилятор сам обьекты создает?
Можно вот так написать на C++:
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
class MyClass
{
private:
    int n;
public:
    inline void setN( int value )
    {
        n = value;
    }
    inline int getN() const
    {
        return n;
    } 
};
 
int main()
{
    constexpr unsigned int size = 10;
    MyClass arr[size];
 
    for( int i = 0; i < size; i++ )
        arr[i].setN( i );
 
    for( const auto& value : arr )
        std :: cout << value.getN() << std :: endl;
 
    return 0;
}
Но в данном случае, объекты типа MyClass, не являются ссылочными в массиве, тоесть в массиве хранятся не указатели на объекты, а сами объекты типа MyClass. Поэтому, при инициализации массива, все объекты создадутся автоматически. Если бы конечно у класса MyClass не было конструктора по умолчанию, а был бы свой какой-нибудь конструктор, с параметром например, то пришлось бы, конечно, через список инициализации у каждого объекта вызывать этот конструктор и передавать нужную для него информацию в параметрах.
0
.NET C#,ASP.NET MVC
Эксперт .NET
 Аватар для lvlkoo
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
08.10.2017, 00:07
Bretbas, в плюсах нету строго разделения на значимые и ссылочные типы?
0
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,086
08.10.2017, 06:15
lvlkoo, нету.
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
08.10.2017, 07:33
lvlkoo,
Цитата Сообщение от lvlkoo Посмотреть сообщение
в плюсах нету строго разделения на значимые и ссылочные типы?
в плюсах нет вообще никакого разделения. Есть понятие типа и все. int, float, Myclass, Mystruct - любой объект любого типа(стандартного или пользовательского) можно сделать или на стеке или в куче.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.10.2017, 07:33

Демонстрация возможностей созданного класса в методе Main()
Здравствуйте уважаемые программисты) Мне нужна ваша помощь. Большую часть я уже сделала, осталось чуть чуть. Вот что мне осталось...

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

Как в Form использовать процедуры пользовательского класса
Здравствуйте уважаемые программисты. Мне задали задачку, которую саму по себе я предстовляю и понимаю, но как реализовать это в Forms...

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

Как правильно использовать нестатические методы класса
здраствуйте. у меня можно так сказать этический вопрос, по поводу использования нестатических методов классов в c#:) я часто использую...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru