2012-10-06 12 views

Respuesta

23

string[,] es un multidimensional array.

multidimensional array

string[][] es una Jagged array:

Una matriz escalonada es una matriz cuyos elementos son matrices. Los elementos de una matriz dentada pueden tener diferentes dimensiones y tamaños. Una matriz dentada a veces se denomina "matriz de matrices"."

Jagged array

6

string[,]-Multidimensional Arrary (matriz rectangular)

Multidimensional puede tener más de una dimensión. El siguiente ejemplo muestra cómo crear una matriz bidimensional de dos filas y dos columnas.

Declaración:

string[,] contacts; 

de instancias:

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

inicialización:

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



string[ ][ ] - Jagged Array (matriz de matrices)

Una matriz dentada es una matriz cuyos elementos son matrices. Los elementos de una matriz dentada pueden ser de diferentes dimensiones y tamaños. Una matriz irregular a veces se denomina "matriz de matrices".

Una matriz dentada puede almacenar eficientemente muchas filas de diferentes longitudes. Se puede usar cualquier tipo de datos, referencia o valor. La indexación de arreglos dentados es rápida. Asignarlos es algo lento.

matrices dentadas son más rápidas que las matrices multidimensionales

Declaración:

string[][] contacts; 

de instancias:

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

inicialización:

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

Mira cómo he editado tu respuesta, y aprenderás cómo insertar enlaces ... – aleroot

4

string[][] como jagged array

Una matriz escalonada es una matriz cuyos elementos son matrices. Los elementos de una matriz escalonada pueden ser de diferentes dimensiones y tamaños. Una matriz escalonada a veces se denomina "matriz de matrices".

mientras que string[,] es multidimensional array que

matrices pueden tener más de una dimensión

1

string[][](Jagged Arrays) son conjunto de matriz con un número fijo de filas y de longitud variable de las columnas mientras que string[,](Rectangular Arrays) es una matriz con un número fijo de filas y columnas. Hay una buena discusión over there

2

Dos aspectos de la diferencia son importantes:

Memoria-sabia:

[n, m] - guarda como un largo montón de memoria, como si se tratara [ n * m] [n] [m] - Se guarda como una matriz simple de tamaño n, donde cada elemento es un puntero a una matriz de tamaño m.

acceso a gota:

[n, m] - Para acceder a la celda i, j lo que realmente sucede es que toma el puntero del [* m n] matriz y compensa por n * Ancho + m, y luego accede al valor. [n] [m] - Para acceder a la celda i, j solo tiene que acceder al puntero del subarranque en el índice n (offset # 1), y luego acceder al subarreglo en el índice m (offset # 1).

[] [] Es mejor en ambos aspectos. Más eficiente en el acceso y más flexible en la memoria. Además, puede acceder a una única fila solo una vez y procesarla de manera más eficiente, ya que no realiza un acceso multidimensional completo para cada celda de esa fila.

Sin embargo, existe una ventaja de [,]: siempre se sabe que el ancho de la matriz es fijo. Usando [] [], cada sub-matriz puede tener diferentes longitudes e incluso puede ser nula. Esto puede considerarse como una ventaja, aunque lo opuesto también puede ser útil, a veces.