我有一个如下的类结构
abstract class AMyAbstractClass {
public readonly int MyReadonlyField;
public int MyReadonlyProperty { get; }//read-only auto-property (syntactic sugar)
}
class MyConcreteClass : AMyAbstractClass {
MyConcreteClass() {
this.MyReadonlyField = 1;
this.MyReadonlyProperty = 1;
}
}
这会引发编译错误
不能分配只读字段(在构造函数或变量初始化程序中除外)
和
无法将属性或索引器“AMyAbstractClass.MyReadonlyProperty”分配给 - 它是只读的
分别。
在第一种情况下,错误消息是错误的,因为它是在构造函数中设置的!
我可以想出具有不可变对象属性的替代方法,但为什么不允许这种情况?这种封装有哪些好的做法?