未分配的非可空变量的值(C#)

Dav*_*vid 7 c# non-nullable unassigned-variable

只是好奇.

如果你走的话:

string myString;
Run Code Online (Sandbox Code Playgroud)

它的值为null.

但如果你去:

int myInt;
Run Code Online (Sandbox Code Playgroud)

C#中此变量的值是多少?

谢谢

大卫

Jon*_*eet 27

首先,请注意,这仅适用于字段,而不适用于局部变量 - 在分配之前无法读取,至少在C#中.实际上,如果你设置了适当的标志,CLR会将堆栈帧初始化为0 - 我相信它是默认的.但它很少被观察到 - 你必须经历一些难以理解的黑客攻击.

默认值为int0 - 对于任何类型,它基本上是由满位零的位模式表示的值.对于值类型,这相当于调用无参数构造函数,对于引用类型,这是null.

基本上CLR用零擦除内存清理.

这也是default(SomeType)任何类型给出的值.


Ita*_*aro 5

int的默认值为0


Blo*_*ard 5

int的默认值为0.

有关每种类型的默认值的完整列表,请参阅此处:http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx