内存分配用于覆盖抽象类的属性

时间:2013-07-14 19:19:50

标签: c# properties abstract-class

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

我是否会这样覆盖它会产生影响:

public override int someProperty {get; set;}

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

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

第一个问题,所以我希望我能正确地问一切。

1 个答案:

答案 0 :(得分:3)

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

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

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

然后没有分配存储空间。

但是如果你使用自动属性:

public virtual int SomeProperty { get; set; }

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