首页 > 解决方案 > 将对象数组添加到另一个类 c#

问题描述

我正在尝试以以下格式读取文本文件(末尾的 # 只是他们所在的课程数量,但我没有将课程名称与 fac/students 课程一起保存)

Course Biology
Faculty Taylor Nate 0
Student Doe John 3
Student Sean Big 0
Course Art
Faculty Leasure Dan 1

第一个输入应该是一门课程,然后是特定课程的教职员工和学生。Course 类应包含一组教职员工和一组学生。

我已经能够将每门课程/学生/教师放入各自的班级,但是我无法想象一种将学生/教师添加到课程中的方法。

我目前将数据放入各自的类中的想法是保留课程的当前索引 - 因此我将其保存为

courses[currentCourse++]

所以当我解析下一行时,(作为一名教师/学生)我已经知道课程索引应该是什么。

        using (StreamReader reader = new StreamReader(fileName))
        {
            while (!reader.EndOfStream)
            {
                lineCounter++;
                line = reader.ReadLine();
                string[] words = line.Split(' ');
                Console.WriteLine(words[0]);
                if (words[0] == "Course")
                    {
                        string nameOfCourse = words[1];
                        courses[currentCourse++] = new Course
                        {
                            Name = nameOfCourse
                        };
                    }
                    if (words[0] == "Faculty")
                    {
                        string firstName = words[1];
                        string lastName = words[2];
                        string numOfClasses = words[3];
                        faculty[currentFaculty++] = new Faculty
                        {
                            FirstName = firstName,
                            LastName = lastName,
                            NumOfClasses = numOfClasses,
                        };
                    }
                    if (words[0] == "Student")
                    {
                        string firstName = words[1];
                        string lastName = words[2];
                        string numOfClasses = words[3];
                        students[currentStudent++] = new Student
                        {
                            FirstName = firstName,
                            LastName = lastName,
                            NumOfClasses = numOfClasses,
                        };
                    }

我知道问题出在课程课程本身——但我不确定将课程添加到另一个课程的术语。

public class Course
{
    public override string ToString()
    {
        return $"{Name}";
    }
    public string Name { get; set; }

}

public class Student
{
    public override string ToString()
    {
        return $"{FirstName} {LastName} {NumOfClasses}";
    }
    public string FirstName { get; set; } = string.Empty;

    public string LastName { get; set; } = string.Empty;

    public string NumOfClasses { get; set; } = string.Empty;
}

谢谢阅读!

标签: c#classsubclass

解决方案


您想将Student和的集合添加Faculty到课程中,对吗?您可以这样做,只需将 a 添加List<T>到您的Course类,然后在构造函数中对其进行初始化。

public class Course
{
    public override string ToString()
    {
        return $"{Name}";
    }
    public string Name { get; set; }

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

    public List<Faculty> FacultyMems { get; set; }

    public Course()
    {
        Students = new List<Student>();
        FacultyMems = new List<Faculty>();
    }

}

在您的using块中,您可以将每个学生/教师添加到课程中,如下所示:

if (words[0] == "Course")
{
   string nameOfCourse = words[1];
   currentCourse++;
   courses[currentCourse] = new Course
   {
      Name = nameOfCourse
   };
}
if (words[0] == "Faculty")
{
    string firstName = words[1];
    string lastName = words[2];
    string numOfClasses = words[3];
    courses[currentCourse].FacultyMems.Add(new Faculty
    {
        FirstName = firstName,
        LastName = lastName,
        NumOfClasses = numOfClasses,
    });
}
if (words[0] == "Student")
{
    string firstName = words[1];
    string lastName = words[2];
    string numOfClasses = words[3];
    courses[currentCourse].Students.Add(new Student
    {
        FirstName = firstName,
        LastName = lastName,
        NumOfClasses = numOfClasses,
    });
}

这样,每次您遇到"Course"课程列表时都会添加一个新项目,然后您可以在这些值出现时附加学生/教师/等。

这可以进一步简化,但您可以遵循这个概念。希望这可以帮助。


推荐阅读