声明的对象数组的默认值是什么
本文关键字:是什么 默认值 对象 声明 数组 | 更新日期: 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
,如果是值类型,则对于int
、long
、double
等类型为0,如果是struct
默认情况下它将
为空。如果您将使用扩展类型,可以在此处查看更多说明https://msdn.microsoft.com/en-us/library/83fhsxwc.aspx