学生=(FileRoutines.LoadStudents(STUDENT_FILE));

时间:2014-03-18 16:17:21

标签: c#

我正在上一个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();

到目前为止,我很遗憾该怎么做。

由于 戴夫

2 个答案:

答案 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();
    }
}