0

У меня есть двумерный массив, определенный как этоКак назначить размер двумерного массива во время выполнения?

int[,] array1 = new int[,]{{1,0},{3,5},{2,5},{8,7}}; 

или я могу ввести любой другой двумерный массив, как array1, может быть

array1 = new int[6,2]... 

Я хочу, чтобы определить другой array2, который является двумерным массивом тоже, и мне нужно, чтобы массив2 имел одинаковые длины в обоих измерениях как array1. Я не могу определить array2 как

new int[array1.GetLength(0), array1.GetLength(1)] 

Как я могу это определить? Если я оставлю его как new int[,], когда я запускаю код ниже, я получаю исключение индекса, которое, по моему мнению, имеет смысл.

for (int i = 0; i < array1.GetLength(0); i++) 
    for (int j = 0; j < array1.GetLength(1); j++) 
    { 
     if (array1[i, j] == -1) 
      array2[i, j] = i+j; 
    } 
+2

Ваше первое предложение, использующее 'new int [array1.GetLength (0), array1.GetLength (1)]' должно работать. Вы получили сообщение об ошибке? –

+0

Да, я получил ошибку: ожидается постоянное значение; но я фактически запускаю свой код в симуляторе IDE визуальной студии. Он выдает такую ​​ошибку в моем симуляторе ... после того, как я прочитал ваш ответ, я попытался запустить этот же код в visual studio, у него нет ошибок. В симуляторе должно быть что-то не так. – spspli

+0

Благодарим вас за ответ! – spspli

ответ

2

Вы получаете исключение индекса, потому что ваш new int[,] не по крайней мере, столь же большой как array1. Вопреки вашей претензии, вы можете определить array2, используя длину массивов array1. Использование:

int[,] array2 = new int[array1.GetLength(0),array1.GetLength(1)]; 

Это позволит установить array2 в одних и те же размеры, как array1 и любой действительный элемент array1 будет действительно для array2 и поэтому вы не получите исключение индекса.

+1

Обратите внимание, что OP говорит, что этот код для них не работает. (Поэтому требуется некоторое дополнительное объяснение). –

+0

@spspli Если это не сработает для вас, дайте мне знать, какую ошибку вы получите, и я также смогу настроить ответ на этот адрес. – casey