我有一个关于在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;
}
}
答案 0 :(得分:0)
不会,只会分配一个指向空的指针(空指针)。
此private SubClass mySubClass;
指向的是== null
。
仅在您致电时
void InitSubClass()
{
mySubClass = new SubClass(this);
}
将分配该实例的实际内存。