#c#
#c#
Вопрос:
Я хочу создать 2D-массив (по сути, сетку) таким образом, чтобы каждый элемент представлял собой целочисленный массив длиной 2 (каждый элемент представляет собой 2D-вектор).
Я интуитивно думал, что это сработает, но я получаю invalid rank specifier
:
int[][,] rarr = new int[2][100, 100];
Ответ №1:
Код, который вы ищете, это:
int[][,] rarr = new int[2][,];
rarr[0] = new int[100, 100];
rarr[1] = new int[100, 100];
Или, в более общем плане, это:
int[][,] rarr = new int[2][,];
for (int i = 0; i < 2; i )
rarr[i] = new int[100, 100];
Ваш код пытается выделить 3 разных массива в одной строке кода, чего вы не можете сделать. Это похоже на то, что вы пытаетесь сделать то же самое, что и этот недопустимый фрагмент кода:
List<Dictionary<string, string>> x = new List<new Dictionary<string, string>()>();
Судя по вашему описанию, вы действительно этого хотите:
int[,][] rarr = new int[100,100][];
for (int i = 0; i < 100; i )
for (int j = 0; j < 100; j )
rarr[i, j] = new int[2];
Комментарии:
1. Да, мне нужно ваше окончательное решение, поскольку оно создает
100*100
массив, гдеi*j
это массив int длиной 2. Нет ли способа сделать это во время объявления и инициализации?2. @HarryStuart — Нет, если бы они были, я бы включил это в свой ответ. Вы понимаете, почему не может быть способа сделать это?
3. Не совсем, я ранее создал словарь словарей, и я думал, что смогу создать многомерный массив массивов также во время инициализации.
4. @HarryStuart — Вы не можете создать словарь словарей и инициализировать внутренние словари одновременно. То же самое относится и к массивам.
5. Хммм, мой код словаря таков:
static Dictionary<string, Dictionary<string, JArray>> uploadDictionary = new Dictionary<string, Dictionary<string, JArray>>();
. Вы правы. Я инициализирую словарь словарей, а не инициализирую словари внутри словаря. Почему C # запрещает это?