将对象数组添加到另一个 Class c#
Adding an Array of Objects to another Class c#
我正在尝试读取以下格式的文本文件
(最后的 # 只是他们所在的 classes 的数量,但我没有用 fac/students class 保存课程名称)
Course Biology
Faculty Taylor Nate 0
Student Doe John 3
Student Sean Big 0
Course Art
Faculty Leasure Dan 1
第一个输入应该是课程,然后是特定课程的教师和学生。课程 class 应包含一组教员和一组学生。
我已经能够将每个 course/student/faculty 放入各自的 class 中,但我无法想象将 students/faculty 添加到课程中的方法。
我目前的想法是将数据放入各自的 classes 中以保留课程的当前索引 - 因此我将其另存为
courses[currentCourse++]
所以当我解析下一行时,(作为 faculty/student)我已经知道课程索引应该是什么。
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,
};
}
我知道问题出在课程 class 本身 - 但我不确定将 class 添加到另一个 class 的术语。
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;
}
感谢阅读!
如果我没理解错的话,你想让你的 course
有一份教职员工和学生的名单吗?
public class Course
{
public override string ToString()
{
return $"{Name}";
}
public string Name { get; set; }
public List<Student> Students { get; set; }
public List<Faculty> FacultyMembers {get; set;}
}
请确保在尝试向列表中添加内容之前初始化列表,否则您将获得空引用异常。
您想将 Student
和 Faculty
的集合添加到课程 class 中,对吗?您可以这样做,只需将 List<T>
添加到 Course
class,然后在构造函数中对其进行初始化。
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
块中,您可以将每个 student/faculty 添加到课程中,如下所示:
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"
时,您的课程列表都会添加一个新项目,然后您可以在出现这些值时追加 students/faculty/etc。
这可以进一步简化,但您可以遵循这个概念。希望这有帮助。
我正在尝试读取以下格式的文本文件 (最后的 # 只是他们所在的 classes 的数量,但我没有用 fac/students class 保存课程名称)
Course Biology
Faculty Taylor Nate 0
Student Doe John 3
Student Sean Big 0
Course Art
Faculty Leasure Dan 1
第一个输入应该是课程,然后是特定课程的教师和学生。课程 class 应包含一组教员和一组学生。
我已经能够将每个 course/student/faculty 放入各自的 class 中,但我无法想象将 students/faculty 添加到课程中的方法。
我目前的想法是将数据放入各自的 classes 中以保留课程的当前索引 - 因此我将其另存为
courses[currentCourse++]
所以当我解析下一行时,(作为 faculty/student)我已经知道课程索引应该是什么。
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,
};
}
我知道问题出在课程 class 本身 - 但我不确定将 class 添加到另一个 class 的术语。
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;
}
感谢阅读!
如果我没理解错的话,你想让你的 course
有一份教职员工和学生的名单吗?
public class Course
{
public override string ToString()
{
return $"{Name}";
}
public string Name { get; set; }
public List<Student> Students { get; set; }
public List<Faculty> FacultyMembers {get; set;}
}
请确保在尝试向列表中添加内容之前初始化列表,否则您将获得空引用异常。
您想将 Student
和 Faculty
的集合添加到课程 class 中,对吗?您可以这样做,只需将 List<T>
添加到 Course
class,然后在构造函数中对其进行初始化。
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
块中,您可以将每个 student/faculty 添加到课程中,如下所示:
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"
时,您的课程列表都会添加一个新项目,然后您可以在出现这些值时追加 students/faculty/etc。
这可以进一步简化,但您可以遵循这个概念。希望这有帮助。