在第一张照片中是我的父类:
它只是将标题设置为“默认标题”并创建类型为LevelData
的新数组。当我调用Setup()
时,被调用的子方法被调用,因为我想要它。在Setup()
方法的子类中,当我打印标题时,它会显示“默认标题”。当我打印数组的长度时,它应该说10。
但是当我尝试访问数组时,我得到一个Object引用错误。为什么我可以访问数组的头部和长度而不是数组本身?
这是孩子:
答案 0 :(得分:2)
创建数组时,所有数组元素都初始化为default(T)
,其中T
是元素类型。对于引用类型(类是引用类型),这始终是null
。 string
也是一种引用类型。对于数字类型,default(T)
始终为值0
。所有其他类型都初始化,所有位都设置为0
。
如果希望数组包含元素,则必须初始化每个条目:
for (int i = 0; i < levels.Length; i++) {
levels[i] = new LevelData();
}
请注意,类可能没有默认构造函数,即没有参数的构造函数。类可能根本没有公共构造函数,只能通过工厂方法实例化。那么如何使用非null条目自动初始化数组呢?