6

C# 编译器允许我编写:

int k=new Int32();

但是,我不能为它分配任何价值。

2个问题

1)不new创建堆分配,如果是这样,堆栈<->值呢?

2)我无能为力int k=new Int32();。我会在什么场景下使用它?

4

1 回答 1

11

所有结构(并且 int/Int32 是一个结构)都允许使用 new(),这只是意味着:将结构初始化为默认值,即结构中的所有字段为零。大多数结构是不可变的——原语当然也是。基本上,您所写的内容与以下内容相同:

int k=0;

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

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

于 2012-11-24T07:45:30.383 回答