c#中初始化和整数声明背后的内存管理概念

时间:2014-12-20 05:39:26

标签: c# memory-management integer

愚蠢的问题,但我只需要了解初始化和整数声明的内存管理概念。 两种语法之间的内存条有什么不同。

private int a;

and 

private int a=0;

感谢。

4 个答案:

答案 0 :(得分:5)

简答:没有。

答案很长:在返回到用户定义的代码之前,CLR使用默认值初始化所有变量。无论如何,您的字段都会以0初始化,然后才能访问它。

  

10.5.4字段初始化

     

字段的初始值,无论是静态字段还是静态字段   instance field,是字段类型的默认值(第5.2节)。它是   在此默认值之前无法观察字段的值   发生了初始化,因此永远不会有字段   “未初始化的”。

答案 1 :(得分:1)

在C#中,所有内容都以某种方式初始化。

如果这是C ++并且你在全球空间中做了第一个,那将是真正的垃圾。但是C#会阻止你使用变量,直到它确定它已被初始化或者它自己初始化它。

至于内存管理方面,整数可能不是最好的例子。整数不是完全"管理"在记忆中。它们只是一个类实例内的4个字节,它与生活或死亡的类一起生活或死亡。现在,如果您要求说出一个参考值,那么您可以预期当类死亡并且它自己清理时,C#将尝试清除它作为成员的所有内容,这可能导致破坏另一个班级的实例。

答案 2 :(得分:1)

坦率地说,C#中的两行没有区别。如果未初始化,则为所有成员变量分配其默认值。

请验证以下两行:

private int a;
private int a1 = 0;

// Compare with default value.
Console.WriteLine(a1 == default(int));

// Compare both variables
Console.WriteLine(a1 == a);

答案 3 :(得分:1)

在c#中,所有变量都默认初始化... 所以你不需要初始化任何变量。