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

C# c中整数初始化和声明背后的内存管理概念#,c#,memory-management,integer,C#,Memory Management,Integer,愚蠢的问题,但我只需要知道初始化和整数声明的内存管理概念。 两种语法在记忆方面有什么不同 private int a; and private int a=0; 谢谢 简单回答:没有 详细回答:在返回到用户定义代码之前,CLR使用默认值初始化所有变量。在您对字段进行任何访问之前,您的字段将被初始化为0 10.5.4字段初始化 字段的初始值,无论是静态字段还是静态字段 实例字段,是字段类型的默认值(§5.2)。它是 在此默认值之前,无法观察字段的值 初始化已经发生,因此字段永远不会被删除

愚蠢的问题,但我只需要知道初始化和整数声明的内存管理概念。 两种语法在记忆方面有什么不同

private int a;

and 

private int a=0;
谢谢

简单回答:没有

详细回答:在返回到用户定义代码之前,CLR使用默认值初始化所有变量。在您对字段进行任何访问之前,您的字段将被初始化为
0

10.5.4字段初始化

字段的初始值,无论是静态字段还是静态字段 实例字段,是字段类型的默认值(§5.2)。它是 在此默认值之前,无法观察字段的值 初始化已经发生,因此字段永远不会被删除 “未初始化”

简单回答:没有

详细回答:在返回到用户定义代码之前,CLR使用默认值初始化所有变量。在您对字段进行任何访问之前,您的字段将被初始化为
0

10.5.4字段初始化

字段的初始值,无论是静态字段还是静态字段 实例字段,是字段类型的默认值(§5.2)。它是 在此默认值之前,无法观察字段的值 初始化已经发生,因此字段永远不会被删除 “未初始化”

在C#中,任何东西都会以这样或那样的方式初始化

如果这是C++,你在全局空间中做了第一个,那就是实际的垃圾。但是C#会阻止您使用变量,直到它确定它已经初始化,或者它会自己初始化它

至于内存管理方面,整数可能不是最好的例子。整数在内存中不是完全“管理”的。它们仅仅是类实例中的4个字节,随着类的生存或消亡而生存或消亡。现在,如果你问一个引用值,那么你可以预期,当类死了,它开始清理自己时,C#会让它尝试清理它作为成员拥有的所有东西,这可能会破坏另一个类的实例。

在C#中,所有东西都会以这样或那样的方式初始化

如果这是C++,你在全局空间中做了第一个,那就是实际的垃圾。但是C#会阻止您使用变量,直到它确定它已经初始化,或者它会自己初始化它


至于内存管理方面,整数可能不是最好的例子。整数在内存中不是完全“管理”的。它们仅仅是类实例中的4个字节,随着类的生存或消亡而生存或消亡。现在,如果你问一个引用值,那么你可以预期,当类死了,它开始清理自己时,C#会让它尝试清理它作为成员所拥有的一切,这可能会导致破坏另一个类的实例。

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

请验证以下两行:

private int a;
private int a1 = 0;

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

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

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

请验证以下两行:

private int a;
private int a1 = 0;

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

// Compare both variables
Console.WriteLine(a1 == a);
在c#中,所有变量都默认初始化。。。 所以你不需要初始化任何变量。

在c中,所有变量都是默认初始化的。。。 因此,您不需要初始化任何变量