我像这样实例化一个数组:
int array[] = new int[4];
这四个成员的默认值是多少?是null、0还是不存在?
它是 0。它不能为 null,因为 null 不是有效的int
value.
来自 C# 5 规范第 7.6.10.4 节:
新数组实例的所有元素都初始化为其默认值(第 5.2 节)。
从第 5.2 节来看:
变量的默认值取决于变量的类型,并确定如下:
- 对于值类型的变量,默认值与值类型的默认构造函数计算的值相同(第 4.1.2 节)。
- 对于引用类型的变量,默认值为 null。
初始化为默认值通常是通过在分配使用内存之前让内存管理器或垃圾收集器将内存初始化为全位零来完成的。因此,使用全位零来表示空引用是很方便的。
(作为实现细节,第一个要点存在一些技巧。虽然 C# 本身不允许您为值类型声明无参数构造函数,但您可以can为 IL 中的值类型创建您自己的无参数构造函数。我不相信在数组初始化中调用这些构造函数,但它们will被称为new X()
C# 中的表达式。不过,这确实超出了 C# 规范的范围。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)