我正在上一个C#课,我有一个项目。该项目的代码为void Main()
编写。以下是Main()
中代码的第一部分:
const string STUDENT_FILE = @"C:\TEMP\Students.txt";
const string ASSIGNMENT_FILE = @"C:\Temp\Assignments.txt";
Students students=FileRoutines.LoadStudents(STUDENT_FILE));
我必须写3个班级的学生,学生和FileRoutines。我似乎无法弄清楚需要进入Students类才能使实例工作。我可以写下面的内容:
string[] students = FileRoutine.LoadStudents(STUDENT_FILE)
并获取我正在尝试的学生阵列:
Students students=FileRoutines.LoadStudents(STUDENT_FILE));
但我似乎无法让这个实例起作用。这是文件的内容:
122338 Weltzer Teresa
123123 Wang Choo
123131 Adams James
123132 Binkley Joshua Troy
123139 Howard Tyler
123160 King Alma
我之前看过这个项目,但似乎没有人能够回答这个问题,而是提供其他选择。 我知道在创建类的实例时我需要有一个构造函数或构造函数,但我没有这样做:
Students students = new Students();
到目前为止,我很遗憾该怎么做。
由于 戴夫
答案 0 :(得分:0)
要按照您的要求实施,FileRoutines.LoadStudents(STUDENT_FILE)
必须返回Students
个实例,因此您需要修改该方法以构建新的Students
并返回string[]
而不是Students
}
那么也许你的string[]
类在其构造函数中使用{{1}}?
这应该足以让你去?
答案 1 :(得分:0)
显然,Students
类型必须表现得像某种集合。我提议这个
学生数据课程是小菜一碟。
class Student
{
public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
现在事情变得更有趣了。以下类实现IEnumerable
的{{1}},以便提供循环其内部结构的最关键方法。一旦你明白这个想法就很容易了。您已经将学生存储在某个集合中,因此只需返回其枚举器而不是创建自定义的枚举器。
Student
最后,一个带有从文件加载方法的类。这可以通过多种方式完成,但我发现LINQ是一种很好的数据查询工具。
class Students : IEnumerable<Student>
{
private readonly List<Student> students;
public Students(IEnumerable<Student> students)
{
this.students = students.ToList();
}
public IEnumerator<Student> GetEnumerator()
{
return students.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return students.GetEnumerator();
}
}