0

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

如果是这样,我想这将是相当少的,因为 SubClass.MyData 字典没有初始化,但仍然比什么都没有......这完全是“扩展”基类(不派生额外的类)的一种体面的方式吗?我试图保持一个相当基本的基类。但是,对于某些操作,我需要额外的属性,我只想存在很短的时间,否则不占用内存。

非常感谢您提供正确方向的指示!

    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;
    }


    }
4

1 回答 1

0

不,将只分配一个空指针(空指针)。

private SubClass mySubClass;说明什么都没有== null

只有在你打电话的那一刻

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

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

于 2013-07-04T13:03:43.983 回答