我想在构造函数中设置只读属性“ EmployeeList”,但是由于某些原因,它是不允许的,因为EmployeeList是只读的。但是,对于其他只读属性“ Manager”,它也可以正常工作。唯一的区别是我自己为EmployeeList编写了吸气剂,为Manager编写了自动生成的吸气剂。
我不允许使用私人二传手来解决此问题。
class Project
{
public Employee Manager { get; }
public EmployeeList EmployeeList
{
//Creates a copy of the EmployeeList and returns it
get
{
//...
return listCopy;
}
}
//Initializes class-variables.
public Project(Employee manager, EmployeeList
employeeList)
{
Manager = manager;
EmployeeList = employeeList; //Error: EmployeeList is read-only
}
}
为什么我不能设置EmployeeList?如何解决?
最佳答案
您可以在构造函数中设置只读的automatically-implemented property,但您已经指定了实现。当您尝试调用“ setter”时,该编译器不知道该怎么做-它不会遍历getter并注意到您正在返回listCopy
变量。 (这甚至可能不是一个字段-我们看不到您的getter代码的其余部分。)
因此,您的选择是:
将EmployeeList
更改为自动实现的属性
直接分配给相关的后勤字段
关于c# - 为什么不能在构造函数中设置此只读属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55992563/