Создание списка объектов в C #, которые используют два класса - PullRequest
1 голос
/ 28 апреля 2019

У меня есть сайт с таблицей строк.Каждая строка имеет два столбца значений.что я хочу сделать, это сохранить каждую строку на своем месте в списке, и дать пользователю возможность ввести значение в списке и получить доступ к каждому значению столбца индивидуально, т.е.не просто сделать строку строки.Окончательный код будет содержать цикл for для циклического перебора строк и кода webscraping, но для устранения неполадок я пропустил это и просто жестко кодирую значения.Я начал с 2 классов, один для получения / установки для отдельных значений класса, а другой для получения / установки этого объекта.Оттуда я создал метод для установки значений.

        public class Student
        {
            public string Name { get; set; }
            public string Address { get; set; }
        }

        public class ListOfStudents
        {
            public Student student { get; set; }
        }

        public static ListOfStudents GetListOfStudents()
        {
            List<Student> students = new List<Student>();
            Student student = new Student
            {
                Name = "Mike",
                Address = "Main St"
            };            
            ListOfStudents listOfStudents = new ListOfStudents
            {
                students.Add(Student)
            };
            return listOfStudents;
        }

Я получаю эту ошибку «Невозможно инициализировать тип« ListClass.ListOfStudents »с инициализатором коллекции, поскольку он не реализует System.Collections.IEnumerable»По сути, я не могу определить, как составить список объектов.

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

Вы забыли использовать Список

public class ListOfStudents
{
    public List<Student> Students { get; set; }
}

и другой код:

List<Student> students = new List<Student>();
Student student = new Student
{
    Name = "Mike",
    Address = "Main St"
}; 
students.Add(Student);           
ListOfStudents listOfStudents = new ListOfStudents
{
    Students = students;
};

Редактировать

Но ваш код очень странный, пожалуйста, скажите, что вы действительно хотите

0 голосов
/ 28 апреля 2019

В вашем коде есть ошибка, потому что студентов не является свойством объекта ListOfStudents Не забывая, что свойства студента ListOfStudents предполагают быть списком, вы можете использовать код ниже

    public class Student
    {
        public string Name { get; set; }
        public string Address { get; set; }
    }

    public class ListOfStudents
    {
        public List<Student> Students { get; set; }
    }

    public static ListOfStudents GetListOfStudents()
    {
        List<Student> students = new List<Student>();
        Student student = new Student
        {
            Name = "Mike",
            Address = "Main St"
        };
        students.Add(student);
        ListOfStudents listOfStudents = new ListOfStudents()
        {
            Students = students
        };
        return listOfStudents;
    }

В качестве разработчика .net в текущем контексте я рекомендую использовать так называемый индексатор

индексатор:

Индексатор - это особый тип свойства, который обеспечивает доступ к классу или структуре так же, как и таблица для его внутренней коллекции.Это то же самое, что и свойство, за исключением того, что оно было определено с помощью этого ключевого слова в квадратных скобках и параметрах.

[source] https://www.tutorialsteacher.com/csharp/csharp-indexer

Пример использования индексатора в вашем контексте:

 public class Student
 {
    public string Name { get; set; }
    public string Address { get; set; }
 }

 public class ListOfStudents
 {
    public Student[] Students = new Student[100];

    public Student this[int index]
    {
        get { return Students[index]; }
        set { Students[index] = value; }
    }
 }
...