为抽象类的重写属性分配内存

本文关键字:分配 内存 属性 重写 抽象类 | 更新日期: 2023-09-27 18:22:21

我有一个抽象类,在其中我定义了一组属性。这会导致子类的每个实例(需要重写属性)为此属性分配内存吗?我问的原因是,有些子类将需要该属性,有些则永远不需要,但其他类确实访问抽象类的属性。

如果我这样覆盖它,会有什么不同吗:

public override int someProperty {get; set;}

或者像这样(故意保持get和set方法为空,因为可能没有为相关字段分配内存?)

    public override int someProperty
    {
        get
        {
        }
        set
        {
        }
    }

第一个问题,所以我希望我问的都是对的。

为抽象类的重写属性分配内存

属性并不(一定)意味着分配了存储。属性只是getset方法的语法糖。除非您也有一个字段来存储数据,否则它们只是一对方法。

示例:如果你的基类有这样的属性:

public virtual int SomeProperty { get { return 0; } { set { } }

然后不分配存储。

但如果你使用自动属性:

public virtual int SomeProperty { get; set; }

然后生成一个自动备份字段,为其分配存储。