首页 > 解决方案 > 如何一次增加两个列表?

问题描述

所以这里有2个类:

public class Student
{
    private string studentName;
    List<Classroom> attendingClassroom = new List<Classroom>();

    public string StudentName { get => studentName; private set => studentName = value; }

    public Student(string studentName)
    {
        StudentName = studentName;
    }

    public void AttendToClassroom(Classroom classroom)
    {
        if (classroom.IsClassroomFull)
        {
            attendingClassroom.Add(classroom);
            classroom.AddStudent(this);
        }
        else
        {
            Console.WriteLine("Class is full!");
        }
    }
}

public class Classroom
{
    const int studentLimit = 20;
    private string classroomName;
    private Teacher headTeacher;
    private List<Student> studentsInClassroom = new List<Student>();

    public Classroom(string classroomName)
    {
        ClassroomName = classroomName;
    }

    public string ClassroomName { get => classroomName; private set => classroomName = value; }

    public bool IsClassroomFull => studentsInClassroom.Count > studentLimit;

    private bool HasTeacher() => headTeacher != null;

    public void SetTeacher(Teacher teacher)
    {
        if (HasTeacher())
        {
            Console.WriteLine("Class already has a teacher !");
        }
        else
        {
            headTeacher = teacher;
        }
    }

    public void WriteHeadTeacherName()
    {
        Console.WriteLine(headTeacher.TeacherName);
    }

    public void AddStudent(Student student)
    {
        studentsInClassroom.Add(student);
    }
}

当我将学生添加到班级时,Student内的AttendingClassroom将具有ClassroomName,而Classroom内的studentsInClassroom将具有StudentName。如您所见,如果我使用AttendToClassroom方法,一切都会好起来的。但是由于AddStudent方法是public,因此可以使用它,然后只有studentInClassroom添加了新属性。我怎样才能防止这种情况或修复此代码?

标签: c#

解决方案


推荐阅读