何时在.NET紧凑框架中分配内存?

Ant*_*ean 1 .net memory compact-framework

何时在.NET紧凑框架中分配内存?如果值和参考类型之间存在差异,请详细说明.赞赏文档或确认步骤.

特别要考虑这种情况......

private MyClass item;  // here?

public void MyMethod()
{
    item = new MyClass();  // or here?
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*uso 5

分配内存有3种不同的方式.

静态的:

这些在编译时被绑定和分配.例如全局静态变量.

堆栈动态:

这些在运行时绑定并压入堆栈.例如函数调用中的局部变量.

堆动态:

现在堆动态也有一些不同的"子类别",如隐式和显式,但我不会详细介绍.

当你申报时

private MyClass item;  // here?
Run Code Online (Sandbox Code Playgroud)

对MyClass的引用被压入堆栈.它只是一个参考,仅此而已.此时它的值为null.

public void MyMethod()
{
    item = new MyClass();  // or here?
}
Run Code Online (Sandbox Code Playgroud)

正是在这一点上,通过调用'new MyClass()'然后引用它来在堆上显式分配内存.

实际上,在调用MyMethod之后,您有2个变量.名为item的引用类型,以及堆上的未命名变量,该项引用的类型为MyClass.