只是好奇,有什么区别:
int A = 100;
and
int A = new int();
我知道 new 用于在堆上分配内存..但我真的不明白这里的上下文。
static void Main()
{
int A = new int();
int B = default(int);
int C = 100;
Console.Read();
}
编译为
.method private hidebysig static void Main() cil managed
{
.entrypoint
// Code size 15 (0xf)
.maxstack 1
.locals init ([0] int32 A,
[1] int32 B,
[2] int32 C)
IL_0000: nop
IL_0001: ldc.i4.0
IL_0002: stloc.0
IL_0003: ldc.i4.0
IL_0004: stloc.1
IL_0005: ldc.i4.s 100
IL_0007: stloc.2
IL_0008: call int32 [mscorlib]System.Console::Read()
IL_000d: pop
IL_000e: ret
} // end of method Program::Main
正如你所看到的,第一个只是初始化它,第二个是一样第三个初始化并设置为100
。至于生成的IL代码,它们都在一行中初始化.
so
int A = new int();
是相同的
int A = default(int);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)