¿Cómo puedo determinar el tamaño de una matriz (longitud / número de elementos) en C #?
¿Cómo puedo determinar el tamaño de una matriz (longitud / número de elementos) en C #?
Respuestas:
Si es una matriz unidimensional a
,
a.Length
dará el número de elementos de a
.
Si b
es una matriz rectangular multidimensional (por ejemplo, int[,] b = new int[3, 5];
)
b.Rank
dará el número de dimensiones (2) y
b.GetLength(dimensionIndex)
obtendrá la longitud de cualquier dimensión dada (indexación basada en 0 para las dimensiones, por lo que b.GetLength(0)
es 3 y b.GetLength(1)
es 5).
Consulte la documentación de System.Array para obtener más información.
Como @Lucero señala en los comentarios, existe el concepto de una "matriz dentada", que en realidad no es más que una matriz unidimensional de matrices (típicamente unidimensionales).
Por ejemplo, uno podría tener lo siguiente:
int[][] c = new int[3][];
c[0] = new int[] {1, 2, 3};
c[1] = new int[] {3, 14};
c[2] = new int[] {1, 1, 2, 3, 5, 8, 13};
Tenga en cuenta que los 3 miembros de c
todos tienen diferentes longitudes. En este caso, como antes c.Length
se indique el número de elementos de c
, (3) y c[0].Length
, c[1].Length
y c[2].Length
será 3, 2, y 7, respectivamente.
int[][]
) ;-)
[,]
y [][]
no parece estar clara para todos los principiantes de .NET, por lo que aún puede valer la pena señalar que [][]
no es una matriz multidimensional en el sentido de sus respuestas.
b.GetLength[0] is 3 and b.GetLength[1] is 5
debería ser b.GetLength(0) and b.GetLength(1)
.
Puede consultar la documentación de Array para encontrar la respuesta a esta pregunta.
En este caso particular, probablemente necesite Length :
int sizeOfArray = array.Length;
Pero dado que esta es una pregunta tan básica y sin duda tiene muchas más como esta, en lugar de solo decirle la respuesta, prefiero decirle cómo encontrarla usted mismo.
Intellisense de Visual Studio
Cuando escribe el nombre de una variable y presiona la .
tecla, le muestra una lista de todos los métodos, propiedades, eventos, etc. disponibles en ese objeto. Cuando resaltas a un miembro, te da una breve descripción de lo que hace.
Presione F1
Si encuentra un método o propiedad que podría hacer lo que desea pero no está seguro, puede mover el cursor sobre él y presionar F1 para obtener ayuda. Aquí obtiene una descripción mucho más detallada y enlaces a información relacionada.
Buscar
Los términos de búsqueda size of array in C#
ofrecen muchos enlaces que le dan la respuesta a su pregunta y mucho más. Una de las habilidades más importantes que debe aprender un programador es cómo encontrar información. A menudo es más rápido encontrar la respuesta usted mismo, especialmente si se ha hecho la misma pregunta antes.
Usa un tutorial
Si recién está comenzando a aprender C #, le resultará más fácil seguir un tutorial. Puedo recomendar el tutoriales de C # en MSDN. Si quieres un libro, te recomiendo Essential C # .
Desbordamiento de pila
Si no puede encontrar la respuesta por su cuenta, no dude en publicar la pregunta en Stack Overflow. Pero le agradecemos que demuestre que se ha esforzado por encontrar la respuesta usted mismo primero.
para matriz de 1 dimensión
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
para matriz multidimensional
int length = listItems.Rank;
Para obtener el tamaño de 1 dimensión
int length = listItems.GetLength(0);
Rank
propiedad no devuelve el número de elementos, devuelve el número de dimensiones.
Length
, Rank
, GetLength
)
yourArray.Length
:)
Para una matriz de una sola dimensión, usa la Length
propiedad:
int size = theArray.Length;
Para matrices de varias dimensiones, la Length
propiedad devuelve el número total de elementos de la matriz. Puede utilizar el GetLength
método para obtener el tamaño de una de las dimensiones:
int size0 = theArray.GetLength(0);
dice así: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2D:
type[][]name=new type[size][] //second brackets are emtpy
luego, mientras usa esta matriz:
name[i]=new type[size_of_sec.Dim]
o puedes declarar algo como una matriz
type[ , ] name=new type [size1,size2]
Lo que se ha pasado por alto hasta ahora es lo que de repente me irritó:
¿Cómo sé la cantidad de elementos dentro de la matriz? Es .Length
igual.Count
a una lista?
La respuesta es: ¡la cantidad de elementos de tipo X que se han colocado en una matriz de tipo X creada con new X[number]
usted tiene que llevarla usted mismo !
P.ej. usando un contador: int countItemsInArray = 0
y countItemsInArray++
por cada asignación a su matriz.
(La matriz que acaba de crear new X[number]
tiene todo el espacio para number
elementos (referencias) de tipo X ya asignados, puede asignar a cualquier lugar dentro como su primera asignación, por ejemplo (si number
= 100 y el nombre de la variable = a
) a[50] = new X();
.
No sé si C # especifica el valor inicial de cada lugar dentro de una matriz en el momento de la creación, si no lo hace o el valor inicial con el que no se puede comparar (porque podría ser un valor que usted mismo haya puesto en la matriz), también tendría que rastrear qué lugares dentro de la matriz ya asignó si no asigna secuencialmente a partir de 0
(en cuyo caso todos los lugares son más pequeños de countItemsInArray
lo que se asignarían).)
En su pregunta, el tamaño de una matriz (longitud / número de elementos) dependiendo de si / está destinado a representar "alternativa" o "dividir por", este último aún debe cubrirse (el "número de elementos" que acabo de dar como " cantidad de artículos "y otros dieron .Length
que corresponde al valor de number
en mi código anterior):
C # tiene un sizeof
operador ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ). Es seguro de usar para tipos integrados (como int) (y solo funciona con tipos (no variables)). Por tanto, el tamaño de una matriz b
de tipo int
en bytes sería b.Length * sizeof(int)
.
(Debido a que todo el espacio de una matriz ya se ha asignado en la creación, como se mencionó anteriormente, y sizeof
solo funciona con tipos, ningún código como sizeof(variable)/sizeof(type)
funcionaría o produciría la cantidad de elementos sin seguimiento).