2016-11-16 3 views
0

Я пытаюсь присвоить значения 0-й позиции массива 2D-целого. Однако я получаю исключение NullReferenceException, хотя я передаю правильные значения.присвоение значения 2d массиву дает мне исключение

public static int[,] Ctable; 

private static void GetTable(int m,int n) 
{ 
    m = 16; 
    for (int i = 1; i <= m; i++) 
    { 
     Ctable[i, 0] = 1; // Here it is giving Exception 
    } 
} 
+0

Ваш Ctable имеет значение null, это ваша проблема, проверьте вопрос, который я отправляю. Узнайте, что такое отладка. – mybirthname

ответ

4

Вы не инициализируете 2D-массив Ctable правильно, он по-прежнему равен нулю. См. Мой пример ниже. Я инициализирую массив размером входного параметра m и n метода void GetTable(int m, int n).

Ваша комбинация неправильная. Массивы нулевые индексируются (0, n - 1). Вы найдете дополнительную информацию для инициализации массивов here.

public static int[,] Ctable; 

private static void GetTable(int m, int n) 
{ 
    Ctable = new int[m, n]; // Initialize array here. 

    for (int i = 0; i < m; i++) // Iterate i < m not i <= m. 
    { 
     Ctable[i, 0] = 1; 
    } 
} 

Однако, вы всегда будете переписывать Ctable. Вероятно, вы ищете что-то вроде:

private const int M = 16; // Size of the array element at 0. 

private const int N = 3; // Size of the array element at 1. 

public static int[,] Ctable = new int [M, N]; // Initialize array with the size of 16 x 3. 

private static void GetTable() 
{ 
    for (int i = 0; i < M; i++) 
    { 
     Ctable[i, 0] = 1; 
    } 
} 
+0

Вы можете показать использование и заполнение данных для индекса n тоже, здесь он заполняет только индекс m. В основном ОП не знает, что хорошо. –

Смежные вопросы