我想在构造函数中设置只读属性“ 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/

10-10 14:06
查看更多