无分配的不可拆卸变量(C#)的值
-
05-10-2019 - |
题
只是好奇。
如果你走的话:
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参考类型默认值通常为null。
字符串是参考类型。 int是一个值类型。参考类型只是针对堆的堆栈上的指针,该指针可能包含一个值,也可能不会包含一个值。值类型只是堆栈上的值,但必须始终将其设置为某物。
类型的单位化变量的值 T
总是 default(T)
. 。对于所有参考类型,这都是null,对于值类型,请参见@blorgbeard发布的链接(或编写一些代码以检查它)。
不隶属于 StackOverflow