新的Int32()用于c#?

时间:2012-11-24 07:34:04

标签: c# .net .net-4.0 int

C#编译器允许我写:

int k=new Int32();

但是,我无法为其分配任何值。

2个问题

1)没有new创建堆分配,如果是,那么堆栈< - >值是什么?

2)我无法对int k=new Int32();做任何事情。在什么情况下我会使用它?

1 个答案:

答案 0 :(得分:7)

所有结构(和int / Int32是结构)允许new()用法,这意味着:将结构初始化为默认值,即。结构中的所有字段均为零。大多数结构都是不可变的 - 原始的肯定是。基本上,你所写的内容与:

相同
int k=0;

你可以做很多事情......但是你不能改变零的任何属性。零为零是零。

new并不总是意味着“在堆上分配”。