数组中成员的默认值是多少?

我像这样实例化一个数组:

int array[] = new int[4]; 

这四个成员的默认值是什么? 它是null,0还是不存在?

它为0.它不能为null,因为null不是有效的int值。

从C#5规范的第7.6.10.4节:

新数组实例的所有元素都初始化为其默认值(第5.2节)。

从第5.2节开始:

变量的默认值取决于变量的类型,并确定如下:

  • 对于value-type的变量,默认值与value-type的默认构造函数(第4.1.2节)计算的值相同。
  • 对于reference-type的变量,默认值为null。

初始化为默认值通常通过让内存管理器或垃圾收集器在分配使用之前将内存初始化为所有位为零来完成。 因此,使用all-bits-zero来表示空引用是很方便的。

(作为一个实现细节,第一个要点周围有一些棘手的问题。虽然C#本身不允许你为值类型声明一个无参数构造函数,但你可以为IL中的值类型创建自己的无参数构造函数。我不相信这些构造函数在数组初始化中调用,但它们在C#中的new X()表达式中调用。但它确实超出了C#规范的范围。)

类型T的自动初始化变量的默认值(例如数组元素或实例字段default(T)default(T)的值相同。 对于引用类型和指针类型,它为null。 对于数字类型,它是该类型的零。 对于布尔来说,这是错误的。 对于struct类型,它是struct值,其所有字段都初始化为其默认值。

从数组(C#编程指南) :

数值数组元素的默认值设置为零,引用元素设置为null。

整数不能为NULL 。 它们的值为’0’。 即使您尝试从代码中为int分配NULL ,您也无法执行此操作。