如何将对象添加到另一个类的列表中?

时间:2019-03-28 10:20:43

标签: c# list object

我发现自己无法实现项目代码的关键部分。任务是开发后端基于文本的成绩簿。我有一个方法addStudent,该方法应该将学生添加到也包含在列表中的部分列表中。

我在Gradebook类中有一个方法addStudent,应该将一个学生对象添加到当前Section对象中包含的列表中。这些部分也包含在列表中。我尝试了各种组合,但似乎找不到真正能让我做到这一点的神奇词汇。

文件定义为5个文件/类;作业(目前可以忽略),学生,科,成绩簿,程序(也可以忽略,仅用于前端(输入以传递到方法等)。

这是我需要实现的方法,包含在Gradebook类中。

public bool addStudent(string firstName, string lastName, string username, long phoneNumber)
        {

            return false; //FIXME
        }

这是节类:

class Section
    {
        string sectionName;
        //probably more properties need to be implemented, or at least would make life simpler
        public Section(string sectionName)
        {
            this.sectionName = sectionName;
            List<Student> students = new List<Student>();
            List<Assignment> assignments = new List<Assignment>();
        }    
    }

这是学生班:

class Student
    {
        string firstName = null;
        string lastName = null;
        long studentID = 0;
        long phoneNumber = 0;
        int absentcount = 0;
        int tardyCount = 0;
        double gradePercent = 0;
        //need to add more properties, read through Gradebook API for more

        public Student(string firstName, string lastName, long studentID, long phoneNumber)
        {
            this.firstName = firstName;
            this.lastName = lastName;
            this.studentID = studentID;
            this.phoneNumber = phoneNumber;
            List<Assignment> studentAssignments = new List<Assignment>();
        }

我知道重复的作业定义,虽然可能不是一个好主意,但我会暂时保留这两个定义,在这种情况下,我只会保留学生版本。

我希望能够添加一些较长的行来引用各自列表中的每个对象,但是我总是会遇到一个错误,要么我需要使字段只读,要么该对象不存在。 。我能想到的唯一解决方案是为列表中最后一个修改后的元素保留一个索引,但我宁愿不这样做。

我在逻辑上会考虑做这样的事情(我知道这是错误的):currentSection.Student.Add(Student(firstName, lastName, username, phoneNumber))。我知道这不可能,因为我需要引用list元素,而不是类本身。

我可能对此也有过多的思考,但是任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您应该从List<Student> students构造函数外部访问Session

将您的Section声明更改为:

class Section
{
    string sectionName;
    public List<Student> students;

    //probably more properties need to be implemented, or at least would make life simpler
    public Section(string sectionName)
    {
        this.sectionName = sectionName;
        students = new List<Student>();
        List<Assignment> assignments = new List<Assignment>();
    }    
}

使用以下方法将学生添加到您的列表中

currentSection.students.Add(new Student(firstName, lastName, username, phoneNumber));