Obj[] array = new Obj[10];
这个数组中每个对象的默认值是什么? 因为我希望它为null并且我不确定它是否已经是它们的值,或者我需要在循环中将它们中的每一个设置为null。
答案 0 :(得分:5)
是的,the online documentation says so:
数值数组元素的默认值设置为零,引用元素设置为null。
C# specification(第1.8节阵列)更具体:
new
运算符会自动将数组的元素初始化为其默认值,例如,对于所有数值类型,该值为零;对于所有引用类型,该值为null。
答案 1 :(得分:1)
这在很大程度上取决于对象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"; } }
}
答案 2 :(得分:0)
使用类型default(T)
的默认值初始化每个数组元素。
如果它是引用类型,则为null
,如果它是值类型,则对于int
,long
,double
等类型,则为0 struct
字段的大小写初始化为默认值。
答案 3 :(得分:0)
默认情况下为null。 如果你将使用扩展类型,你可以在这里看到更多解释 https://msdn.microsoft.com/en-us/library/83fhsxwc.aspx