Ответ 1
В начальном объявлении требуется еще один набор фигурных скобок {}
:
var waypoints = new int[4][,] {
new int[,] {{6}, {0}},
new int[,] {{1}, {1}},
new int[,] {{1}, {5}},
new int[,] {{6}, {5}}
};
Это связано с тем, что для такого массива 2D каждый элемент массива рассматривается как массив для инициализации (хотя он обычно используется для каждого элемента массива, такого как val[0,0] = 4;
).
Изменить (после комментариев от комментариев):
Поставить в отличие от int[][]
(известный как jagged array
, то есть: массив массивов, элемент массива которых может быть разный размер), int[,]
является двумерным массивом с фиксированным размером. Оба являются массивами, которые хранят массивы, и поэтому каждый элемент массива представляет собой массив. Это объясняет, почему существует необходимость вставить еще одну фигурную скобку в свою инициализацию, как указано выше.
Такой 2D-массив, при инициализации по-разному, приведет к разной размерности (и, следовательно, существует несколько способов его инициализации):
int[,] val = new int[,] { { 6 }, { 0 } }; //resulting in int[2,1]
int[,] val = new int[,] { { 6, 0 } }; //resulting in int[1,2]
В любом случае требуется дополнительный набор фигурных скобок.
Для различий между jagged array
и многомерным, фиксированным размером, массивом есть уже много good пояснения/бенчмаркинг доступно онлайн из хорошо известных источников. И я понимаю, что для меня не было бы значительным, кроме интереса OP, больше узнать об этом. (И, следовательно, область для этого ответа изначально предназначена только для ответа на неудачную инициализацию).
Понятно, что решение лучше не использовать для хранения координатных точек (как это делает OP). Объяснение, приведенное выше, дается, чтобы объяснить, почему его инициализация не работает, а не предоставлять лучшее решение для хранения координатных точек. Что касается сохранения координатных точек, Point в System.Drawing
struct
будет более правильным (как указано в комментарии).
Использование 2D-массива для представления одной точки в 2D Декартовой координаты является "избыточным" , поскольку 1D-массив уже способен сохраняя столько чисел, сколько позволяет компьютер, для хранения точек в декартовой системе координат требуется больше двух чисел.