2 huahu66 huahu66 于 2014.11.26 15:07 提问

C#中,子类怎么初始化父类的readonly属性?

class A
{
public readonly int _X;

public A()
{
     _X=3;
}

}

class B:A
{
public B()
{
//Init _X?
}

}

3个回答

devmiao
devmiao   Ds   Rxr 2014.11.27 19:48

不能初始化,readonly只能由构造函数或者字段定义时一次性赋值。如果你希望派生类可以修改/赋值,而类的外部不能修改,可以使用只读属性,写法是:
public int _X { get; private set; }

showbo
showbo   Ds   Rxr 2014.11.26 15:30

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);

sscrazy
sscrazy   2014.12.03 16:51

既然定义成readonly为什么还要重新赋值呢?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!