当你声明一个没有实例的对象时,.Net会做什么?

3ya*_*bos 2 .net c# memory-management object

我想知道.Net Framework如何处理声明但未实例化的对象情况.

例如,我声明一个像这样的对象

DropDownList ddl;
Run Code Online (Sandbox Code Playgroud)

什么也不做.我知道我应该对这个变量做一些事情并得到关于它的警告,但我不知道的是它将被存储的位置.

是否有一个查找表存储所有声明的变量的数据?或者是否有每个声明的虚拟参考?

编辑:我只是想知道如何为这个对象声明分配内存.

Edit2:无论是否是局部变量,我只是谈论内存分配结构.我想知道这个引用存储在哪里.

Ode*_*ded 6

如果ddl是一个字段,那么值ddl将是null,因为它是一个引用类型.

任何试图呼叫其成员的企图都将导致NullReferenceException.

如果它是局部变量,它将只是未分配.

值类型将获得default(T)其类型.

编译器本身可以完全删除调用,具体取决于它的声明位置,但这是一个实现细节.