0

次のコードでは、エラーが発生しています - NullReferenceException was unhandled です。文字列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';
            }
        }
    }
}
4

1 に答える 1

7

配列の2番目と3番目のレベルを初期化する必要があります。要素を割り当てるだけでは不十分です。それで:

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';
            }
        }
    }
}
于 2012-07-19T13:11:33.597 に答える