好奇。
如果你去:
string myString;
它的值为空。
但如果你去了:
int myInt;
C#中此变量的值是多少?
由于
大卫
答案 0 :(得分:27)
首先,请注意,这仅适用于字段,而不适用于局部变量 - 在分配之前无法读取,至少在C#中。事实上,如果你有一个合适的标志集,CLR会将堆栈帧初始化为0 - 我相信它是默认的。但它很少被观察到 - 你必须经历一些难以理解的黑客攻击。
int
的默认值为0 - 对于任何类型,它基本上是由满位零的位模式表示的值。对于值类型,这相当于调用无参数构造函数,对于引用类型,这是null。
基本上,CLR用零擦除内存。
这也是default(SomeType)
给出的任何类型的值。
答案 1 :(得分:5)
默认值为0
答案 2 :(得分:5)
int的默认值为0.
请点击此处查看每种类型的默认值的完整列表:http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx
答案 3 :(得分:2)
以下是C#中值类型的默认值表: http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx 引用类型的默认值通常为null。
答案 4 :(得分:2)
String是引用类型。 Int是值类型。引用类型只是指向堆的堆栈上的指针,它可能包含也可能不包含值。值类型只是堆栈上的值,但必须始终设置为某个值。
答案 5 :(得分:1)
T
类型的单元化变量的值始终为default(T)
。对于所有引用类型,这是null,对于值类型,请参阅@Blorgbeard发布的链接(或编写一些代码来检查它)。