提问者:小点点

在创建类数组时,其成员仍未实例化


抱歉问了这个愚蠢的问题!

为什么我得到的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
    }
}

我想我需要一个类中字符串的构造函数,但是它应该是什么样子的呢?


共1个答案

匿名用户

当您创建数组时,内容被擦除为零,对于引用,这意味着:所有引用都是null(创建数组或引用并不同时为数组中的每个元素创建对象)。因此,您需要显式地为内容创建对象。例如:

testedClassObject = new myTestClass[2];
testedClassObject[0] = new myTestClass { testString = "test" };

或者更方便地说:

testedClassObject = new [] {
    new myTestClass { testString = "test" },
    // etc  
};

它同时执行数组和内容初始化(并为您推断长度)。