Зубчатые измерения массива

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

int[][] hulkSmash = new int[10][];
hulkSmash[0] = new int[2] {1,2};

Как я могу работать с зубчатыми массивами, не устанавливая размеры, или это - просто факт жизни с программированием C#??

1
задан sooprise 27 May 2010 в 19:45
поделиться

4 ответа

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 });
0
ответ дан 3 September 2019 в 00:15
поделиться

Набор целых чисел (например, List) даст вам желаемую гибкость и не тратит впустую пространство, как при выделении массива, который намного больше, чем вам когда-либо понадобится.

0
ответ дан 3 September 2019 в 00:15
поделиться

У вас есть 2 варианта:

  • Вы можете прочитать размер информации, возвращаемой из базы данных, и выделить пространство вашего массива в это время, как только вы узнаете, что получаете.
  • В противном случае вам нужна структура данных с переменными размерами. Взгляните, например, на List: MSDN: List
1
ответ дан 3 September 2019 в 00:15
поделиться

Другие примеры с использованием List и коллекций - лучший способ продолжить. Иногда я нахожу синтаксис

List<List<int>> hulkSmash = new List<List<int>>();

немного громоздким. К счастью, есть несколько способов справиться с этим.

Первый вариант, который я иногда использую, - это создание псевдонима:

using List<List<int>> = HulkSmashCollection;

Это избавляет вас от необходимости постоянно выполнять вложенные << >> . Везде, где вы вводите List > , вы можете вместо этого набирать HulkSmashCollection (или что-то еще более короткое).


Второй вариант - заключить список списков в класс, например, MyHulkSmashes. Здесь вы предоставляете только те функции / свойства, которые вам нужны, например Count или Find () и т. Д.

Обе эти концепции используются для уменьшения количества кода на экране и уменьшить воспринимаемую сложность.

1
ответ дан 3 September 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: