如何在派生类中不使用方法或构造函数直接访问基类属性?
问题解答
先看你的代码:
class Animal { public bool isHungry { get; set; } public int Age { get; set; } public string Name { get; set; } } class Dog : Animal { Age = 5; //报错:“Age 在当前上下文中不存在” public Dog() { Age = 5;//可以正常运行 Console.WriteLine("Dog"); } }
是的,不使用方法或构造函数的话,确实无法在类的直接作用域里直接访问并赋值基类的公共属性。
原因很明确:C#的类体中,除了字段的初始化表达式之外,只能存放成员声明(比如方法、属性、字段的定义),不能直接写可执行的赋值语句这类代码。不管是基类继承来的属性,还是派生类自己的实例成员,都必须在实例上下文中才能访问——构造函数、实例方法、实例属性的访问器,这些才属于实例上下文,能直接操作实例成员。
如果不想在构造函数里赋值,还有这几种可行的方式:
- 在实例方法中赋值:
class Dog : Animal { public void InitAge() { Age = 5; } } - 创建对象时用对象初始化器赋值:
var dog = new Dog { Age = 5 };
内容的提问来源于stack exchange,提问作者Angsu Sen
相关产品推荐
相关产品推荐

