c# - 将对象数组添加到另一个类 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;
}
谢谢阅读!
解决方案
您想将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"
课程列表时都会添加一个新项目,然后您可以在这些值出现时附加学生/教师/等。
这可以进一步简化,但您可以遵循这个概念。希望这可以帮助。
推荐阅读
- c++ - 如何使用 RapidXML 读取 UTF-8 XML 并将其与 C++ 一起使用
- python - 减少 matplotlib 子图中的间距
- c - 使用 C 中的指针和函数进行选择排序
- c - 如何根据距离计算运费
- python-3.x - 如何从 requests.exceptions.ChunkedEncodingError 获取错误代码
- c++ - 传递给放置 new 的指针是否是指向其对象表示的非 UB 指针?
- react-native - React Native 深度链接 - 损坏?
- javascript - 将 HTML 动态添加到 Pug(Jade)模板的正确方法是什么?
- html - 链接到另一个 html 文件的 HTML href 卡在旋转的圆圈上
- android - 没有收到 ACTION_PACKAGE_REMOVED 广播 - Android 10/设置