0

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

我是否像这样覆盖它会有所不同:

public override int someProperty {get; set;}

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

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

第一个问题,所以我希望我问的一切都是正确的。

4

1 回答 1

3

属性并不(必然)暗示已分配存储空间。属性只是语法糖getset方法。除非您还有一个字段来存储数据,否则它们只是成对的方法。

示例:如果您的基类具有如下属性:

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

然后不分配存储。

但是,如果您使用自动属性:

public virtual int SomeProperty { get; set; }

然后会生成一个自动支持字段,为其分配存储空间。

于 2013-07-14T19:31:10.720 回答