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