提问人:Klaus Ullrich 提问时间:10/26/2020 更新时间:10/26/2020 访问量:77
创建类数组时,其成员仍未实例化 [duplicate]
When creating a class array its members are still not instantiated [duplicate]
问:
对不起,这个愚蠢的问题!
为什么会出现 NullReferenceException: Object reference not set to an instance of an object?
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
}
}
我想我需要一个类中字符串的构造函数,但这应该是什么样子的?
答:
1赞
Marc Gravell
10/26/2020
#1
创建数组时,内容将擦除为零,对于引用,这意味着:所有引用都是(创建一个或多个引用不会同时为数组中的每个元素创建对象)。因此,您需要为内容显式创建对象。例如:null
testedClassObject = new myTestClass[2];
testedClassObject[0] = new myTestClass { testString = "test" };
或者更方便:
testedClassObject = new [] {
new myTestClass { testString = "test" },
// etc
};
它同时执行数组和内容初始化(并为您推断长度)。
评论
testedClassObject[0]
public class MyTestClass
public string TestString {get;set;}
public MyTestClass[] TestedClassObject {get;set;}
public List<MyTestClass> TestedClassObject {get;} = new List<MyTestClass>();