object[,]
относится к прямоугольному массиву, что означает, что это сетка.
Тогда у вас есть object[][]
, который является зубчатым массивом, массивом массивов.
Основное отличие состоит в том, что object[,]
всегда будет иметь фиксированные размеры, в то время как с помощью зубчатого массива (object[][]
) все массивы могут иметь разные размеры.
Это пример, который четко показывает разницу в использовании (оба делают то же самое):
// Create and fill the rectangluar array
int[,] rectangularArray = new int[10, 20];
for (int i = 0; i < 200; i++)
rectangularArray[i / 20, i % 20] = i;
// Next line is an error:
// int[][] jaggedArray = new int[10][20];
int[][] jaggedArray = new int[10][]; // Initialize it
// Fill the jagged array
for (int i = 0; i < 200; i++)
{
if (i % 20 == 0)
jaggedArray[i / 20] = new int[20]; // This size doesn't have to be fixed
jaggedArray[i / 20][i % 20] = i;
}
// Print all items in the rectangular array
foreach (int i in rectangularArray)
Console.WriteLine(i);
// Print all items in the jagged array
// foreach (int i in jaggedArray) <-- Error
foreach (int[] innerArray in jaggedArray)
foreach (int i in innerArray)
Console.WriteLine(i);
РЕДАКТИРОВАТЬ:
Внимание, этот код выше не реальный производственный код, это просто самый простой способ сделать это в качестве примера.
Интенсивное использование делений через/
и %
делают это намного медленнее.Вы могли бы лучше использовать вложенный цикл.