NullReferenceException在c#数组中未处理

时间:2012-07-19 13:07:32

标签: c# arrays nullreferenceexception

我收到错误 - 在以下代码中未处理NullReferenceException。我想从字符串pt中提取字符。但是我在for循环之外得到了正确的值,但内部却没有。

ArrayList list = read();
int N = Values.N;
string pt = Values.PlainText;
MessageBox.Show(""+pt.Length+" "+pt[0]);
int count = 0;
char[][][] array = new char[6][][];
for(int i=0;i<6;i++)
{
    for(int j=0;j<N;j++)
    {
        for(int k=0;k<N;k++)
        {
            if (count < pt.Length)
            {
                array[i][j][k] = 'r';
                //array[i][j][k] = pt[count];
                //count++;
            }
            else
            {
                array[i][j][k] = 'x';
            }
        }
    }
}

1 个答案:

答案 0 :(得分:7)

您必须初始化数组的第二级和第三级,不能只分配元素。所以:

ArrayList list = read();
int N = Values.N;
string pt = Values.PlainText;
MessageBox.Show(""+pt.Length+" "+pt[0]);
int count = 0;
char[][][] array = new char[6][][];
for(int i=0;i<6;i++)
{
    for(int j=0;j<N;j++)
    {
        array[i] = new char[N][]; // <---- Note
        for(int k=0;k<N;k++)
        {
            array[i][j] = new char[N]; // <---- Note
            if (count < pt.Length)
            {
                array[i][j][k] = 'r';
                //array[i][j][k] = pt[count];
                //count++;
            }
            else
            {
                array[i][j][k] = 'x';
            }
        }
    }
}