问题描述
- C#中,子类怎么初始化父类的readonly属性?
- class A
{
public readonly int _X;public A(){ _X=3;}
}
class B:A
{
public B()
{
//Init _X?
}}
解决方案
不能初始化,readonly只能由构造函数或者字段定义时一次性赋值。如果你希望派生类可以修改/赋值,而类的外部不能修改,可以使用只读属性,写法是:
public int _X { get; private set; }
解决方案二:
A多一个重载版本,可以传参的
class A
{
public readonly int _X;
public A(int x){ _X = x;}public A() { }
}
class B : A
{
public B(int x):base(x) { }
}
B b = new B(12);
解决方案三:
既然定义成readonly为什么还要重新赋值呢?
时间: 2024-08-21 11:59:38