int num = new int(); 这条线执行时会发生什么?

Nar*_*dra 3 .net c# instantiation value-type new-operator

今天要了解一个新事物,我们可以使用new运算符创建整数,如下所示

int num = new int();
Run Code Online (Sandbox Code Playgroud)

现在我想知道我是否以这种方式创建一个整数,然后生成的整数将是值类型或引用类型?我想这将是一种价值类型.我尝试了下面的代码

int num1 = 10;
int num2 = new int();
int num3;
num1 = num2;
num2 = num3;
Run Code Online (Sandbox Code Playgroud)

我得到了以下构建错误:

使用未分配的局部变量'num3'

我知道为什么会出现这个构建错误.但我想知道何时以及如何使用new int()以及这究竟是如何工作的?有人可以对此有所了解吗?

感谢和问候 :)

Son*_*nül 5

int i = new int();
Run Code Online (Sandbox Code Playgroud)

等于

int i = 0;
Run Code Online (Sandbox Code Playgroud)

它们之间没有区别.它们将生成相同的IL代码.

  // Code size       4 (0x4)
  .maxstack  1
  .locals init ([0] int32 num)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ret
Run Code Online (Sandbox Code Playgroud)

Using Constructors (C# Programming Guide)

结构类型的构造函数类似于类构造函数,但结构不能包含显式默认构造函数,因为编译器会自动提供一个构造函数.此构造函数将结构中的每个字段初始化为默认值.

整数的默认值是0.检查更多Default Values Table