创建 class 数组时,其成员仍未实例化
When creating a class array its members are still not instantiated
抱歉这个愚蠢的问题!
为什么会出现 NullReferenceException:对象引用未设置到对象的实例?
public class myTestClass
{
public string testString;
}
public class Test : MonoBehaviour
{
public myTestClass[] testedClassObject;
private void Start()
{
testedClassObject = new myTestClass[2];
testedClassObject[0].testString = "test"; // --> Error
}
}
我想我 class 中的字符串需要一个构造函数,但它应该是什么样子?
当你创建一个数组时,内容被擦除为零,这对于引用意味着:所有引用都是null
(创建一个数组或引用不会同时为数组中的每个元素创建对象) .因此,您需要明确地为内容创建对象。例如:
testedClassObject = new myTestClass[2];
testedClassObject[0] = new myTestClass { testString = "test" };
或者更方便:
testedClassObject = new [] {
new myTestClass { testString = "test" },
// etc
};
同时执行数组和内容初始化(并为您推断长度)。
抱歉这个愚蠢的问题!
为什么会出现 NullReferenceException:对象引用未设置到对象的实例?
public class myTestClass
{
public string testString;
}
public class Test : MonoBehaviour
{
public myTestClass[] testedClassObject;
private void Start()
{
testedClassObject = new myTestClass[2];
testedClassObject[0].testString = "test"; // --> Error
}
}
我想我 class 中的字符串需要一个构造函数,但它应该是什么样子?
当你创建一个数组时,内容被擦除为零,这对于引用意味着:所有引用都是null
(创建一个数组或引用不会同时为数组中的每个元素创建对象) .因此,您需要明确地为内容创建对象。例如:
testedClassObject = new myTestClass[2];
testedClassObject[0] = new myTestClass { testString = "test" };
或者更方便:
testedClassObject = new [] {
new myTestClass { testString = "test" },
// etc
};
同时执行数组和内容初始化(并为您推断长度)。