Вопрос
Я использую зазубренные массивы и иметь немного проблемы (или, по крайней мере, я думаю, что я делаю). Размер этих массивов определяются тем, сколько строк возвращаются в базу данных, поэтому она очень переменная. Единственное решение, которое у меня есть, - это установить размеры массива, чтобы быть очень огромным, но это кажется ... просто не лучший способ сделать вещи.
int[][] hulkSmash = new int[10][];
hulkSmash[0] = new int[2] {1,2};
Как я могу работать с зазубренными массивами, не устанавливая размеры, или это просто факт жизни с C # программированием ??
Решение
List<List<int>> hulkSmash = new List<List<int>>();
hulkSmash.Add(new List<int>() { 1, 2 });
или
List<int[]> hulkSmash = new List<int[]>();
hulkSmash.Add(new int[] { 1, 2 });
Другие советы
У вас есть 2 варианта:
- Вы можете прочитать размер информации, возвращаемой из базы данных, и выделите пространство массива в то время, как только вы узнаете, что вы получаете.
- В противном случае, что вы ищете, - это структура данных, имеющая переменные размеры. Посмотрите на список, например: MSDN: список <T>
Другие примеры используют List<T>
И коллекции - лучший способ продолжить. Я иногда нахожу
List<List<int>> hulkSmash = new List<List<int>>();
синтаксис таба громоздкий. К счастью, есть несколько вариантов управления этим.
Первый вариант, который я иногда использую, это сделать псевдоним:
using List<List<int>> = HulkSmashCollection;
Это мешает вам сделать вложенный <<<Types>>>
все время. Везде вы напечатаете List<List<int>>
Вы можете вместо этого типа HulkSmashCollection
(или что-то еще короче) вместо этого.
Второй вариант - обернуть список списков в классе, называемых, скажем, myhulksmashes. Здесь вы предоставляете только функции / свойства, которые вам нужны, например Count
или Find()
и т.п.
Оба эти концепции используются для уменьшения количества кода на экране и уменьшить воспринимаемую сложность.
Коллекция INTS (таких как список) даст вам гибкость, которую вы хотите, и не тратить пространство, что выделило бы массив, который намного больше, чем вам когда-либо понадобится.