使用类作为属性时使用内存

时间:2013-07-04 13:00:04

标签: c# class memory extension-methods derived

我有一个关于在C#中用作属性的内存使用类的问题。查看下面的代码,在运行“InitSubClass()”之前,是否会将内存分配给baseClass对象的“mySubClass”属性?

如果是这样的话,我猜它会相当少,因为SubClass.MyData没有初始化,但仍然比什么都没有...... 这是否是“扩展”基类(不需要派生其他类)的好方法?我试图保持一个相当基本的baseClass。但是,对于某些操作,我需要额外的属性,我只希望在短时间内存在,否则不占用内存。

非常感谢你指出正确的方向!

    class BaseClass
    {

    private SubClass mySubClass;

    public SubClass MySubClass
    {
    get
    {
    return mySubClass;
    }
    }

    void InitSubClass()
    {
    mySubClass = new SubClass(this);
    }

    }

    class SubClass
    {

    BaseClass mybaseClass
    {
    get; set;
    }

    //a lot, and potentially fairly heavy properties which I only need for a short duration, e.g. 
    Disctionary<int,object MyData;

    public Subclass(BaseClass myBaseClass_in)
    {
    mybaseClass = myBalseClass_in;
    }


    }

1 个答案:

答案 0 :(得分:0)

不会,只会分配一个指向空的指针(空指针)。

private SubClass mySubClass;指向的是== null

仅在您致电时

void InitSubClass()
{
  mySubClass = new SubClass(this);
}

将分配该实例的实际内存。