2016-03-16 3 views
1

Мне нужно создать 2D-массив, размер столбца которого равен 6, но размер строки может отличаться. Как задать динамический размер строки в 2D массиве? Ниже приведен код, который я пробовал, но не повезло.Инициализация размера 2D-массива во время выполнения с использованием C#

int n; 
string num = console.ReadLine(); 
Int32.TryParse(num,out n); 
int[,] ar = new int[n,6] ; 
+0

В чем проблема с кодом? –

+1

У вас есть опечатка: 'Console' должна быть заглавной. означает «не повезло»? Скомпилировал ли код? После изменения капитализации «Консоли» я смог запустить его успешно ssfully. – adv12

+0

http://stackoverflow.com/questions/683073/how-to-set-array-length-in-c-sharp-dynamically –

ответ

0

Нет ничего плохого в том, как вы строите массив mulitidimention. Следующий код является действительным, так что я подозреваю, что ваша ошибка в другом месте:

int n = 9; 
int[,] ar = new int[n,6]; 

Я предполагаю, что ваш вход не идет через правильно, чтобы добавить некоторые проверки ошибок, чтобы выяснить, что пошло не так. Во-первых, Console.ReadLine() должен быть капитализирован или он не будет компилироваться. Далее убедитесь, что TryParse фактически функционирует должным образом (она возвращает bool, указывающий успех или неудачу: «Я пытался, но не повезло»

int n; 
string num = Console.ReadLine(); 
if (num == null) { 
    // ERROR, No lines available to read. 
} 
if (!Int32.TryParse(num,out n)) { 
    // ERROR, Could not parse num. 
} 
int[,] ar = new int[n,6]; 

Если проблема сохраняется, люди, как правило, ценят более наглядные объяснения, чем Убедитесь, что сообщите людям, которые просматривают ваш вопрос, что это ошибка компиляции или ошибка времени выполнения и как можно более конкретная.

0

Я бы использовал словарь как таковой.

Dictionary<int,List<int>> numbers = new Dictionary<int,List<int>>(); 

И вы могли бы добавить элемент, как это:

numbers.Add(1,new List<int>(){1,2,3,4,5,6}); 

И добавить номера к конкретной строке.

numbers[1].Add(7); 

И для доступа к номеру в определенной строке и столбце.

numbers[1][2] = 34; 
+0

Коллекционные классы велики, но «Словарь» будет включать гораздо больше накладных расходов, чем большинство других решений. – Foggzie

+0

Правда, это было первое, что я думал об этом довольно необычном запросе. – Rariolu

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