愚蠢的问题,但我只需要了解初始化和整数声明的内存管理概念。 两种语法之间的内存条有什么不同。
private int a;
and
private int a=0;
感谢。
答案 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#中,所有变量都默认初始化... 所以你不需要初始化任何变量。