可以为空的非引用类型变量是否需要new()?

Tob*_*oby 5 c# constructor types nullable

如果我创建了一个非引用类型的变量,比如说int,nullable,即int?,这是否意味着我需要在赋值之前使用构造函数?

通常,我只是初始化一个非引用类型变量

int foo = 5;
Run Code Online (Sandbox Code Playgroud)

但是,如果我有一个可以为空的非参考数据类型变量是必要的初始化,如下所示,还是我仍然可以使用上面的简单初始化?

int? foo = new int();
foo = 5;
Run Code Online (Sandbox Code Playgroud)

Pat*_*man 8

不需要.在分配之前,您不需要创建实例.这int?是一个在赋值时创建的结构.

你的作业foo = 5;实际上是:

foo = new Nullable<int>(5);
Run Code Online (Sandbox Code Playgroud)

这完全由编译器完成.不需要自己做这件事.

  • @adjan,问题是完全正确的,所以答案.我看到你删除的答案本身就很糟糕,所以很可能被低估了 (3认同)
  • @adjan,这个问题可能很差(主观而言),但根本不是基于意见,有些代码可行或不可行.此外,由于您对问题的看法,对答案进行投票不正确 (2认同)
  • @Toby我编辑了你的答案,所以我可以删除downvote. (2认同)