声明的对象数组的默认值是什么

本文关键字:是什么 默认值 对象 声明 数组 | 更新日期: 2023-09-27 18:35:06

Obj[] array = new Obj[10];

此数组中每个对象的默认值是多少?我希望它们都是空的,我不确定是否需要在循环中将它们中的每一个都设置为 null。

声明的对象数组的默认值是什么

是的,在线文档是这样说的:

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

C# 规范(第 1.8 节数组)更加具体:

new运算符自动将数组的元素初始化为其默认值,例如,对于所有数值类型,该值为零,对于所有引用类型为 null。

在很大程度上取决于Obj对象的类型。如果是引用类型,则值null 。如果是值类型,则值为 not null

更一般地说,数组的值初始化为由default(ObjClass)返回的值,default(ObjStruct)或通常default(anyTypeHere)

class Program
{
    static void Main()
    {
        ObjStruct[] array = new ObjStruct[10];
        Console.WriteLine(array[0].Test);
    
        ObjClass[] array = new ObjClass[10];
        Console.WriteLine(array[0].Test); //NullReferenceException
    }
}
public class ObjClass
{
    public string Test { get { return "Not null"; } }
}
public struct ObjStruct
{
    public string Test { get { return "Not null"; } }
}

每个数组元素都使用类型 default(T) 的默认值进行初始化。

如果是引用类型,则为null,如果是值类型,则对于intlongdouble等类型为0,如果是struct

字段,则初始化为默认值。
默认情况下它将

为空。如果您将使用扩展类型,可以在此处查看更多说明https://msdn.microsoft.com/en-us/library/83fhsxwc.aspx