作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
只是好奇,有什么区别:
int A = 100;
和
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 代码,它们都在一行中初始化。
所以
int A = new int();
与
相同int A = default(int);
关于c# - 在哪里以及为什么使用 int a=new int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5746873/
我是一名优秀的程序员,十分优秀!