//Consider this declaration
string name;
此处字符串变量 name 是一个未分配的变量,如果未初始化,此声明是否为 name 保留了任何内存?
答案 0 :(得分:3)
这不是未分配的。所有类/结构都会收到其默认值。对于字符串,它是null
。
如果它是局部变量,那么优化将倾向于将其删除。如果它是一个实例变量,那么将分配内存(我认为,C#规范还不清楚)。
答案 1 :(得分:-1)
方法的局部变量不保留任何内存,根据其使用方式和其他变量的使用方式为其分配寄存器。只要它没有被使用,就没有分配寄存器。
您可以在方法中包含大量变量,但CPU中的寄存器数量有限,因此编译器会优化您的代码以重复使用寄存器。有关详细信息,请参阅Register allocation。
不,string name;
没有保留任何内存。