Я использую зубчатые массивы и имею определенную проблему (или по крайней мере я думаю, что делаю). Размер этих массивов определяется тем, сколько строк возвращается в базе данных, таким образом, это является очень переменным. Единственное решение, которое я имею, состоит в том, чтобы установить размеры массива, чтобы быть очень огромным, но это кажется... просто не лучшим способом сделать вещи.
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 });
Набор целых чисел (например, List) даст вам желаемую гибкость и не тратит впустую пространство, как при выделении массива, который намного больше, чем вам когда-либо понадобится.
У вас есть 2 варианта:
Другие примеры с использованием List
и коллекций - лучший способ продолжить. Иногда я нахожу синтаксис
List<List<int>> hulkSmash = new List<List<int>>();
немного громоздким. К счастью, есть несколько способов справиться с этим.
Первый вариант, который я иногда использую, - это создание псевдонима:
using List<List<int>> = HulkSmashCollection;
Это избавляет вас от необходимости постоянно выполнять вложенные <<
. Везде, где вы вводите List
, вы можете вместо этого набирать >
HulkSmashCollection
(или что-то еще более короткое).
Второй вариант - заключить список списков в класс, например, MyHulkSmashes. Здесь вы предоставляете только те функции / свойства, которые вам нужны, например Count
или Find ()
и т. Д.
Обе эти концепции используются для уменьшения количества кода на экране и уменьшить воспринимаемую сложность.