c# - 如何一次增加两个列表?
问题描述
所以这里有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添加了新属性。我怎样才能防止这种情况或修复此代码?
解决方案
推荐阅读
- android - Android 工作室有没有办法轮询光传感器而不是等待 SensorEvent?
- android - 退款客户应用内购买,但 BillingClient 仍然显示用户已购买?
- android - 自定义分隔线在线性布局中不起作用
- datatable - 行数=“10”的extendedDataTable 中的侦听器问题
- javascript - 防止选择中间有无效日期的日期范围
- rally - 使用jira open api作为数据源在拉力赛中设计层次网格
- c# - C# 保存上次发送邮件到桌面(作为 .msg)
- ios - UIImageView 的自动调整
- swift - When Standard Location Service and Significant Location Changes are used together, What`s happen?
- maven - 如何在 VS Code 中为 Maven 命令创建快捷方式?