Как создать многомерный массив в c# - PullRequest
2 голосов
/ 19 марта 2020

Я хотел бы создать многомерный массив в c#, но я не уверен, как. Массив должен выглядеть следующим образом:

array1, array2, array3
array4, array5, array6
array7, array8, array9

Каждый маленький массив будет хранить 3 int с. Мне удалось создать многомерный массив, который хранит массив 1 в каждой строке, но мне нужно хранить массивы 3 в каждой строке.

Код ниже:

int[][] jaggedArray = new int[3][];

jaggedArray[0] = new int[] {  1,  3,  5 };
jaggedArray[1] = new int[] {  0,  2,  4 };
jaggedArray[2] = new int[] { 11, 22, 33 };

Ответы [ 4 ]

4 голосов
/ 19 марта 2020

Ваше описание соответствует 2d массиву массивов int[,][]:

 int[] array1 = new int[] {1, 2, 3};
 ... 
 int[] array9 = new int[] {89, 562, 356};

 ...  

 // 2d array of arrays (array1..array9)
 int[,][] array = new int[,][] {
   { array1, array2, array3, },
   { array4, array5, array6, },
   { array7, array8, array9, },  
 };
0 голосов
/ 19 марта 2020

Если у вас всегда есть 3x3x3, вы можете использовать трехмерный массив:

int[,,] my3dArray = new int[3,3,3];

И вы можете получить к нему доступ так:

my3dArray[0,0,0] = 5;
my3dArray[0,0,1] = 2;
my3dArray[1,2,0] = 41;
Console.WriteLine(myArray[1,2,0]); // prints 41

Если каждое измерение имеет переменный размер, Вы можете использовать массив массивов массивов (вид трехмерного зубчатого массива):

int[][][] myJagged = new int[3][][];
myJagged[0] = new int[3][];
myJagged[0][0] = new int[] {1, 2, 3}; // etc. until you've initialized all the arrays at all levels

Console.WriteLine(myJagged[0][0][2]); // prints 3

В качестве альтернативы, если только ваше последнее измерение имеет переменный размер (или если с ним проще работать), вы могли бы использовать 2d массив массивов:

int[,][] myArray = new int[3,3][];
myArray[0,0] = new int[] { 5, 2, 41 };
Console.WriteLine(myArray[0,0][2]); // prints 41
0 голосов
/ 19 марта 2020

Вы можете заявить, как указано ниже. Вы можете использовать неровные массивы.

int[][,] jaggedArray4 = new int[3][,] 
{
    new int[,] { {1,3,3}, {5,7,7},{1,2,3} },
     new int[,] { {1,3,3}, {5,7,7},{1,2,3} },
     new int[,] { {1,3,3}, {5,7,7},{1,2,3} }
};

Console.WriteLine(jaggedArray4[0][1,0]);//displayed first row , 2nd element array's first element
0 голосов
/ 19 марта 2020

Вы смешиваете многомерный и зубчатый массив

//multidimensional Array
 int[,] multi = { { 1,2,3 }, { 1,2,3 }, { 1,2,3 } };
//array of arrays (jagged arrays) 
int[][] jagged = new int[][] { new int[] { 1,2,3 }, new int[] { 1,2,3 }, new int[] { 1,2,3 } };

, поэтому в вашем случае ответ будет

int[,,] result = new int[,,] {
    { { 1,2,3 },{ 1,2,3 },{ 1,2,3 } },
    { { 1,2,3 },{ 1,2,3 },{ 1,2,3 } },
    { { 1,2,3 },{ 1,2,3 },{ 1,2,3 } },
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...