C # Заполнить массив объектов пользовательским вводом

#c# #arrays

#c# #массивы

Вопрос:

Я новичок в c #, и мне трудно понять, как заполнить массив из пользовательского ввода. У меня есть массив из 5 объектов заданий

 static Job[] jobArray = new Job[5];
  

Пользователь будет вводить описание для каждой работы, время на выполнение каждой работы и оплату за каждую работу. Мне нужно поместить эти введенные значения в массив.
Любая помощь будет оценена, спасибо.

Комментарии:

1. Ваш вопрос, вероятно, отклоняется, потому что это такой вопрос для начинающих. Иногда это вызывает у людей инстинктивную ненависть. Например, «Как он может этого не знать ?!». К вашему сведению. Ваш вопрос мне кажется правильным. Проблема четко определена. В противном случае, добро пожаловать на сайт.

Ответ №1:

В основном, что вам нужно иметь в виду, так это то, что строка выше, в которой вы инициализируете массив, создает не объекты внутри него, а только массив.

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

Этот пример кода делает это для Description , Hours и Pay свойства Job

 Job[] jobArray = new Job[5];

for (int i = 0; i < jobArray.Length; i  )
{
   Job job = new Job();

   Console.WriteLine("Job "   i);

   Console.WriteLine("Enter description:");
   job.Desciption = Console.ReadLine();

   Console.WriteLine("Enter hours:");
   job.Hours = Console.ReadLine();

   Console.WriteLine("Enter pay:");
   job.Pay = Console.ReadLine();

   jobArray[i] = job;
}
  

Комментарии:

1. спасибо, для других полей (часы, оплата) я бы использовал 2 других массива?

2. @John — см. Обновление. Вам не нужны другие массивы, а просто для установки свойств элементов, которые вы уже создаете

Ответ №2:

Создайте функцию для чтения задания:

 static Job ReadJob() {
 return new Job() {
  Name = Console.ReadLine(),
  Description = Console.ReadLine(),
  //...
 };
}
  

А затем заполнить массив:

 for (int i = 0; i < jobs.Length; i  )
 jobs[i] = ReadJob();
  

Возможны бесконечные варианты этого.

Комментарии:

1. Это правильное решение с хорошим уровнем инкапсуляции. Странно, что кто-то это отрицает.