我正在尝试将数据插入到对象的二维数组中

Posted

技术标签:

【中文标题】我正在尝试将数据插入到对象的二维数组中【英文标题】:I am trying to insert data into a 2D array of objects 【发布时间】:2021-02-21 21:48:30 【问题描述】:

我的代码适用于一维数组,但是当我尝试制作一个二维数组时,我收到一条错误消息

错误信息:

NullReferenceException: Object reference not set to an instance of an object

这是我的代码:

public class NewBehaviourScript : MonoBehaviour

    
    public CoreManager[] mng2 = new CoreManager[5];
    public CoreManager[][] mng = new CoreManager[5][];
   
    void Start()
    


        //this code works fine 
        mng2[1].actual_words = new string[5];
        mng2[1].actual_words[0] = "test 1 ";
        Debug.Log(mng2[1].actual_words[0]);

     
        //this code gives me the error message  
        mng[0][0].actual_words = new string[5]; // the error message is about this line  
        mng[0][0].actual_words[0] = "test 2 ";
        Debug.Log(mng[0][0].actual_words[0]);
    

CoreManager 类:

public class CoreManager


    [Tooltip("Write these words in actual sequence of the sentence")]
    public string[] actual_words;

    [Tooltip("Write these words in any sequence of the sentence")]
    public string[] mixed_words;


【问题讨论】:

【参考方案1】:

您在这里尝试构建的是一个锯齿状阵列。对于锯齿状数组的每个附加维度,您还需要创建它的一个实例。在您的情况下,它看起来像:

mng[0] = new CoreManager[number of elements you want];
mng[0][0] = new CoreManager();
mng[0][0].actual_words = new string[5]; // the error message is about this line  
mng[0][0].actual_words[0] = "test 2 ";
Debug.Log(mng[0][0].actual_words[0]);

这是锯齿状阵列上的Microsoft docs。

【讨论】:

我只是在尝试修复,但仍然收到相同的错误消息 我通过添加以下代码解决了这个问题:mng[0][0] = new CoreManager(); @mamonjaran 你是对的,是的。更新了代码以反映这一点。

以上是关于我正在尝试将数据插入到对象的二维数组中的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中将一列值插入到二维数组中

二维对象数组 YAML 到 Java

php中一个二维数组,怎么吧数组中的数据作为value插入到数据库某个表中

php 将二维数组批量插入到数据库中

为啥我的程序没有将字符从文件输入到二维数组中?

使用 Array.prototype.map 将具有索引的对象插入二维数组