You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在派生类中不使用方法或构造函数直接访问基类属性?

问题解答

先看你的代码:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:48:15