С# Arrays - string [] [] vs. string [,] - программирование
Подтвердить что ты не робот

С# Arrays - string [] [] vs. string [,]

Возможный дубликат:
В чем разница между многомерным массивом и массивом массивов в С#?

Может ли кто-нибудь объяснить мне разницу между string[][] и string[,]?

4b9b3361

Ответ 1

string[,] представляет собой многомерный массив .

multidimensional array

string[][] является Jagged array:

Яичный массив - это массив, элементами которого являются массивы. Элементы зубчатый массив может иметь разные размеры и размеры. Зубчатый массив иногда называют "массивом массивов".

Jagged array

Ответ 2

string[,] - Многомерное произвольное (Прямоугольный массив)

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

Декларация:

string[,] contacts;

Активация:

string[,] contacts = new string[2,2];

Инициализация:

string[,] contacts = new string[2, 2] { {"John Doe","[email protected]"}, {"Jane Doe","[email protected]"} };



string[ ][ ] - Jagged Array (массивы массивов)

Яичный массив - это массив, элементами которого являются массивы. Элементы зубчатого массива могут быть разных размеров и размеров. Ящурный массив иногда называют "массивом массивов".

Неровный массив может эффективно хранить много строк различной длины. Можно использовать любые типы данных, ссылки или значения. Индексирование зубчатых массивов происходит быстро. Выделение их происходит несколько медленнее.

Жесткие массивы быстрее, чем многомерные массивы

Декларация:

string[][] contacts;

Активация:

string[][] contacts = new string[2][];
for (int i = 0; i < contacts.Length; i++) 
{
   contacts[i] = new string[3];
}

Инициализация:

string[][] contacts = new string[2][] { new string[] {"[email protected]","[email protected]"}, new string[] {"[email protected]","[email protected]","[email protected]"} };

Ответ 3

string[][] как зубчатый массив

Яичный массив - это массив, элементами которого являются массивы. Элементы зубчатого массива могут быть разных размеров и размеров. Ящурный массив иногда называют "массивом массивов".

тогда как string[,] представляет собой многомерный массив , который

Массивы могут иметь более одного измерения

Ответ 4

Важны два аспекта различия:

Память-накрест:

[n, m] - Сохранено как длинная группа памяти, как если бы она была [n * m] [n] [m] - Сохраняется как простой массив размера n, где каждый элемент является указателем на массив размером m.

Access-накрест:

[n, m] - для доступа к ядру i, j, что действительно происходит, это то, что он принимает указатель массива [n * m] и смещает его по n * width + m, а затем обращается к значению. [n] [m] - Чтобы получить доступ к ячейке i, j, вы просто получите доступ к указателю суб-массива в индексе n (смещение # 1), а затем получите доступ к подматрице с индексом m (смещение # 1).

[] [] Лучше в обоих аспектах. Более эффективен в доступе и более гибкий в памяти. Кроме того, вы можете получить доступ к одной строке только один раз и обработать ее еще более эффективно, так как вы не выполняете полный многомерный доступ для каждой ячейки в этой строке.

Однако существует преимущество [,]: вы всегда знаете, что ширина матрицы фиксирована. Используя [] [], каждый подматрица может иметь разную длину и может даже быть нулевым. Это можно рассматривать как преимущество, хотя иногда может быть полезно и обратное.

Ответ 5

string[][] (Jagged Arrays) - массив массива с фиксированным числом строк и переменной длиной столбцов, тогда как string[,] (прямоугольные массивы) - матрица с фиксированным количество строк и столбцов. Существует хорошая дискуссия там