Как я могу заполнить список, содержащий структуру в C #, используя цикл? - PullRequest
0 голосов
/ 23 мая 2019

Я новичок в C #, и я попробовал это с массивами неделю назад (калькулятор CGPA), теперь я хочу скопировать консольное приложение, используя только что изученные обобщенные значения

Попытка с использованием словаря, но занимает только два элемента

struct CourseInfo
{
    public string courseName {get; set;}
    public int load {get; set;}
    public char grade {get; set;} 
}

class Gene
{
  static void Main(string[] args)
  {
    var courseList = new List<CourseInfo>();

    Console.WriteLine("How many courses are you offering? ");
    int no_of_courses = Convert.ToInt32(Console.ReadLine());

    Console.WriteLine("Enter them");
    for (int i = 0; i < no_of_courses; i++)
    {
      courseList.Add(Console.ReadLine());
    }
    foreach (var course in courseList)
    {
      Console.WriteLine($"{course.courseName} {course.load} {course.grade}");   
    }
  }

Первая ошибка была:

Наилучшее совпадение перегруженного метода для System.Collections.Generic.List.Add (NewGene.CourseInfo) имеет недопустимые аргументы

секунда была:

Аргумент # 1 не может преобразовать строковое выражение в тип `NewGene.CourseInfo '"

1 Ответ

1 голос
/ 23 мая 2019

Вам нужно загрузить список с CourseInfo структурами, а не строками. Вы можете сделать это встроенным с помощью инициализаторов свойств:

Изменить это:

courseList.Add(Console.ReadLine());

к этому:

courseList.Add(new CourseInfo() { courseName = Console.ReadLine() });

Однако более читаемый код может выглядеть так:

var courseInfo = new CourseInfo();
courseInfo.courseName = Console.ReadLine();
courseInfo.load = 3;
courseInfo.grade = 'A';
courseList.Add(courseInfo);
...