2019.5.10——C#類數組的初始化問題

今天在幫實驗室研究生學長做一個小項目時碰見了一個問題(類中包含另一個類的數組時的初始化),代碼如下:

public class Test : MonoBehaviour {

    private Class_B[] arry_B;
    private int num = 3;

	void Start () {
        arry_B = new Class_B[num];
        for(int i=0; i<num; i++)
        {
            for(int j=0; j<arry_B[i].num; j++)
            {
                arry_B[i].arry_A[j].name_A = "test";
            }
        }
	}
}

public class Class_A{

    public string name_A;

}

public class Class_B {

    public Class_A[] arry_A;
    public int num;

    Class_B(){

        num = 3;
        arry_A = new Class_A[num];

    }
}

在Unity+C#的環境下,聲明的兩個類的數組並調用時出現瞭如下錯誤,說是某個變量是空值:

定位到代碼中的位置是:

經過排查後發現,是在聲明變量時雖然開闢了數組的空間,但是對於數組中每個元素並沒有開闢相應的空間。這時就需要單獨去開闢。

調整後的代碼:

public class Test : MonoBehaviour {

    private Class_B[] arry_B;
    private int num = 3;

	void Start () {
        arry_B = new Class_B[num];
        for(int i=0; i<num; i++)
        {
            arry_B[i] = new Class_B();
            for(int j=0; j<arry_B[i].num; j++)
            {
                arry_B[i].arry_A[j].name_A = "test";
            }
        }
	}
}

public class Class_A{

    public string name_A;

}

public class Class_B {

    public Class_A[] arry_A;
    public int num;

    public Class_B(){
        num = 3;
        arry_A = new Class_A[num];
        for(int i=0; i<num; i++)
        {
            arry_A[i] = new Class_A();
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章