Вопрос

Я использую зазубренные массивы и иметь немного проблемы (или, по крайней мере, я думаю, что я делаю). Размер этих массивов определяются тем, сколько строк возвращаются в базу данных, поэтому она очень переменная. Единственное решение, которое у меня есть, - это установить размеры массива, чтобы быть очень огромным, но это кажется ... просто не лучший способ сделать вещи.

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 (таких как список) даст вам гибкость, которую вы хотите, и не тратить пространство, что выделило бы массив, который намного больше, чем вам когда-либо понадобится.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top