C#编译器允许我写:
int k=new Int32();
但是,我无法为其分配任何值。
2个问题
1)没有new
创建堆分配,如果是,那么堆栈< - >值是什么?
2)我无法对int k=new Int32();
做任何事情。在什么情况下我会使用它?
答案 0 :(得分:7)
所有结构(和int / Int32是结构)允许new()用法,这意味着:将结构初始化为默认值,即。结构中的所有字段均为零。大多数结构都是不可变的 - 原始的肯定是。基本上,你所写的内容与:
相同int k=0;
你可以做很多事情......但是你不能改变零的任何属性。零为零是零。
new
并不总是意味着“在堆上分配”。