下面这两个有什么区别?
int i =0;
int i = new int();
Run Code Online (Sandbox Code Playgroud)
在内存分配方面有什么区别吗?还有其他区别吗?
它们都编译成同样的东西.
假设你有:
static void Main(string[] args)
{
int i = 0;
int j = new int();
Console.Write("{0}{1}", i, j);
}
Run Code Online (Sandbox Code Playgroud)
如果您在发布模式下构建并在ILSpy中查看可执行文件,则它将编译为:
private static void Main(string[] args)
{
int i = 0;
int j = 0;
Console.Write("{0}{1}", i, j);
}
Run Code Online (Sandbox Code Playgroud)
new int() 和...一样 default(int)
这是IL
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 27 (0x1b)
.maxstack 3
.locals init ([0] int32 i,
[1] int32 j)
IL_0000: ldc.i4.0
IL_0001: stloc.0
IL_0002: ldc.i4.0
IL_0003: stloc.1
IL_0004: ldstr "{0}{1}"
IL_0009: ldloc.0
IL_000a: box [mscorlib]System.Int32
IL_000f: ldloc.1
IL_0010: box [mscorlib]System.Int32
IL_0015: call void [mscorlib]System.Console::Write(string,
object,
object)
IL_001a: ret
} // end of method Program::Main
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1173 次 |
| 最近记录: |