Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
C# 编译器允许我编写:
int k=new Int32();
但是,我不能为它分配任何价值。
2个问题
1)不new创建堆分配,如果是这样,堆栈<->值呢?
new
2)我无能为力int k=new Int32();。我会在什么场景下使用它?
所有结构(并且 int/Int32 是一个结构)都允许使用 new(),这只是意味着:将结构初始化为默认值,即结构中的所有字段为零。大多数结构是不可变的——原语当然也是。基本上,您所写的内容与以下内容相同:
int k=0;
你可以用它做很多事情......但是你不能改变零的任何属性。零就是零就是零。
new并不总是意味着“在堆上分配”。