C# 如何同时增加这两个列表?

C# 如何同时增加这两个列表?,c#,C#,这里有两个类: public class Student { private string studentName; List<Classroom> attendingClassroom = new List<Classroom>(); public string StudentName { get => studentName; private set => studentName = value; } public St

这里有两个类:

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);
    }
}
公共班级学生
{
私有字符串studentName;
List ATTINDINGCLASSORY=新列表();
公共字符串StudentName{get=>StudentName;private set=>StudentName=value;}
公立学生(字符串studentName)
{
StudentName=StudentName;
}
公共休息室(教室)
{
如果(教室已满)
{
出席课堂。添加(课堂);
课堂。添加学生(本);
}
其他的
{
WriteLine(“类已满!”);
}
}
}
公共课堂
{
const int studentLimit=20;
私有字符串classroomName;
私人教师;校长;
私有列表学生在教室=新列表();
公共教室(字符串classroomName)
{
ClassroomName=ClassroomName;
}
公共字符串ClassroomName{get=>ClassroomName;private set=>ClassroomName=value;}
公共教室已满=>Studentsin课堂。计数>studentLimit;
private bool HasTeacher()=>校长!=null;
公共空白设置器(教师)
{
if(HasTeacher())
{
WriteLine(“班级已经有老师了!”);
}
其他的
{
校长=教师;
}
}
public void WriteHeadTeacherName()
{
Console.WriteLine(班主任、教师姓名);
}
公立学校学生(学生)
{
教室中的学生。添加(学生);
}
}
当我把一个学生加入课堂时, 学生内部的上课教室将有教室名称和 教室内教室中的学生将具有学生姓名。 如你所见,如果我使用AttentToClassRoom方法,一切都会好起来。
但是由于AddStudent方法是公共的,因此可以使用它,然后只有studentInClassroom添加了新属性。如何防止这种情况发生或修复这种代码?

无关:
if(教室.IsClassroomFull)
应该是
if(!教室.IsClassroomFull)
对于以下问题:您可以使用“访问者模式”和显式实现的接口的组合。或者(实际上我提倡)让它们完全不相关(而不是相互依赖),而不是抽象出学生/课堂关系的第三类。考虑创建班级<代码>大学> /代码>包含所有学生、所有房间和一个以上的“教室里的学生”列表。。谢谢,先生。请尝试使用表达式bodied,这样一些逻辑就颠倒了。我还建议添加一个协调器类-作为旁注-此代码
public string StudentName{get=>StudentName;private set=>StudentName=value;}
没有任何意义。您应该使用自动实现的属性,除非它们中实际包含逻辑-因此更改为
公共字符串StudentName{get;private set;}
。在这个注释中,我会考虑让这个属性只读,因为您已经在类的构造函数中设置了学生的名字。