Strings
最后,可以在属性声明中添加set
集合,而不添加collection
。为什么c#这样设计?如果@Override
public void removeTeacherFromCourse(Course course, Teacher teacher) {
teacher.getCourses().remove(course);
updateTeacher(teacher);
}
像普通属性一样工作会更容易理解,对吗?
答案 0 :(得分:4)
它正常运行,您没有使用该操作设置属性。 List<>
是一个对象,您所做的只是调用已分配给Strings
属性的该对象的方法。
如果你这样做:
static void Main(string[] args)
{
Customer myCustomer = new Customer();
myCustomer.Strings = new List<string>();
}
你会发现它不会编译,因为它试图为没有setter的属性分配一个新值。
答案 1 :(得分:-1)
看看这行代码:
public List<string> Strings { get; } = new List<string>();
可能看起来这段代码表示属性Strings
包含字符串列表。但事实并非如此,因为在C#中,变量不能包含对象。此代码表示属性Strings
将引用保存到字符串列表中。
向此列表添加元素时,不会更改Strings
属性的值。您正在修改对象,但您没有修改引用。由于您没有更改Strings
属性的值,因此您不需要setter。