C#中未分配变量的内存

时间:2015-02-05 14:40:48

标签: c# variables memory memory-management unassigned-variable

//Consider this declaration
string name;

此处字符串变量 name 是一个未分配的变量,如果未初始化,此声明是否为 name 保留了任何内存?

2 个答案:

答案 0 :(得分:3)

这不是未分配的。所有类/结构都会收到其默认值。对于字符串,它是null

如果它是局部变量,那么优化将倾向于将其删除。如果它是一个实例变量,那么将分配内存(我认为,C#规范还不清楚)。

答案 1 :(得分:-1)

方法的局部变量不保留任何内存,根据其使用方式和其他变量的使用方式为其分配寄存器。只要它没有被使用,就没有分配寄存器。

您可以在方法中包含大量变量,但CPU中的寄存器数量有限,因此编译器会优化您的代码以重复使用寄存器。有关详细信息,请参阅Register allocation

不,string name;没有保留任何内存。