С# Создание массива массивов
Я пытаюсь создать массив массивов, которые будут использовать повторяющиеся данные, что-то вроде ниже:
int[] list1 = new int[4] { 1, 2, 3, 4 };
int[] list2 = new int[4] { 5, 6, 7, 8 };
int[] list3 = new int[4] { 1, 3, 2, 1 };
int[] list4 = new int[4] { 5, 4, 3, 2 };
int[,] lists = new int[4, 4] { list1 , list2 , list3 , list4 };
Я не могу заставить его работать, и поэтому мне интересно, если я подхожу к этому неправильно.
Я пытаюсь создать какой-то метод создания длинного списка значений, чтобы я мог обрабатывать их в определенном порядке, несколько раз. Что-то вроде,
int[,] lists = new int[90,4] { list1, list1, list3, list1, list2, (and so on)};
for (int i = 0; i < 90; ++i) {
doStuff(lists[i]);
}
и передать массивы в doStuff()
по порядку. Я иду по этому поводу совершенно неправильно, или я что-то упустил для создания массива массивов?
Ответы
Ответ 1
Что вам нужно сделать, так это:
int[] list1 = new int[4] { 1, 2, 3, 4};
int[] list2 = new int[4] { 5, 6, 7, 8};
int[] list3 = new int[4] { 1, 3, 2, 1 };
int[] list4 = new int[4] { 5, 4, 3, 2 };
int[][] lists = new int[][] { list1 , list2 , list3 , list4 };
Другой альтернативой может быть создание типа List<int[]>
:
List<int[]> data=new List<int[]>(){list1,list2,list3,list4};
Ответ 2
Я думаю, что вы можете искать Jagged Arrays, которые отличаются от многомерных массивов (как вы используете в своем примере) в С#. Преобразование массивов в ваши объявления в неровные массивы должно заставить его работать. Тем не менее, вам все равно нужно использовать две петли для перебора всех элементов в 2D-зубчатом массиве.
Ответ 3
Проблема в том, что вы пытаетесь определить элементы в списках для нескольких списков (а не несколько ints, как определено). Вы должны определять такие списки.
int[,] list = new int[4,4] {
{1,2,3,4},
{5,6,7,8},
{1,3,2,1},
{5,4,3,2}};
Вы также можете сделать
int[] list1 = new int[4] { 1, 2, 3, 4};
int[] list2 = new int[4] { 5, 6, 7, 8};
int[] list3 = new int[4] { 1, 3, 2, 1 };
int[] list4 = new int[4] { 5, 4, 3, 2 };
int[,] lists = new int[4,4] {
{list1[0],list1[1],list1[2],list1[3]},
{list2[0],list2[1],list2[2],list2[3]},
etc...};