2010-05-16 47 views
46

¿Cómo puedo determinar el tamaño (longitud/número de objetos) en una matriz en C#?Tamaño de matriz (longitud) en C#

+1

@Marcelo: ... pero todavía no puede responder a preguntas muy sencillas como "¿Dónde están mis gafas". ;) – Guffa

+2

¿Qué quiere decir con "tamaño"? ¿La cantidad de elementos o el tamaño en bytes? –

+8

No puedo creer que las personas realmente voten por alto este tipo de preguntas. – fearofawhackplanet

Respuesta

5

yourArray.Length :)

6

Con la propiedad Length.

int[] foo = new int[10]; 
int n = foo.Length; // n == 10 
+1

Muchas gracias – Amal

97

Si es una matriz unidimensional a,

a.Length 

dará el número de elementos de a.

Si b es una matriz multi-dimensional rectangular (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 dado dimensión (indexación basada en 0 para las dimensiones, por lo que b.GetLength(0) es 3 y b.GetLength(1) es 5).

Consulte System.Array documentation para obtener más información.

Como señala @Lucero 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 la 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 indicará el número de elementos de c, (3) y c[0].Length, c[1].Length y c[2].Length serán 3, 2 y 7, respectivamente.

+1

Para completar, también podría haber enumerado la forma en que funcionan las matrices dentadas (por ejemplo, 'int [] []') ;-) – Lucero

+0

Lo consideré, @Lucerno, pero pensé que era un problema diferente: calcular el tamaño de cosas _inside_ una matriz - una matriz dentada es realmente una matriz de una sola dimensión que contiene matrices de dimensión simple, como estoy seguro que sabes. –

+2

, por supuesto, sé que tienes razón y es por eso que agregué el comentario con una sonrisa en lugar de escribir una respuesta yo mismo. Sin embargo, la distinción entre '[,]' y '[] []' no parece estar clara para todos los novatos .NET, por lo que aún vale la pena señalar que '[] []' no es una matriz multidimensional en su sentido de las respuestas. – Lucero

26

Puede encontrar la respuesta a esta pregunta en documentation for Array.

En este caso particular, es probable que tenga Length:

int sizeOfArray = array.Length; 

Pero como esto es una pregunta tan básica y que sin duda, tienen muchos más como este, en lugar de simplemente diciendo que la respuesta que más bien diría usted cómo encontrar la respuesta usted mismo.

Visual Studio IntelliSense

Al escribir el nombre de una variable y presiona la tecla . se muestra una lista de todos los métodos, propiedades, eventos, etc. disponibles en ese objeto. Cuando resaltas un miembro, te da una breve descripción de lo que hace.

Pulse F1

Si encuentra un método o propiedad que puedan hacer lo que quiera, pero no está seguro, puede mover el cursor sobre él y pulse F1 para obtener ayuda . Aquí obtienes una descripción mucho más detallada más enlaces a información relacionada.

Buscar

los términos de búsqueda size of array in C# da muchos enlaces que le dice la respuesta a su pregunta y mucho más. Una de las habilidades más importantes que un programador debe aprender es cómo encontrar información. A menudo es más rápido encontrar la respuesta usted mismo, especialmente si se ha formulado la misma pregunta antes.

Utilice un tutorial

Si usted está recién empezando a aprender C# le resultará más fácil seguir un tutorial. Puedo recomendar el C# tutorials en MSDN. Si quieres un libro, te recomiendo Essential C#.

desbordamiento de pila

Si usted no es capaz de encontrar la respuesta por su cuenta, por favor no dude en enviar la pregunta sobre desbordamiento de pila. Pero apreciamos que demuestres que has hecho el esfuerzo de encontrar primero la respuesta tú mismo.

+1

¡Buen trabajo, Mark, pero puede ser una exageración! – Nayan

+1

@Nayan: ¡Gracias! Si bien es genial que el OP recibió rápidamente su respuesta de otros carteles, creo que es más importante enseñar a los principiantes cómo encontrar información en lugar de enseñarles respuestas a preguntas específicas. Espero que OP encuentre útil esta respuesta y que les ahorre tener que hacer cientos de preguntas para poder encontrar las respuestas. –

+12

+1 por tomarse el tiempo para adoptar este enfoque: "darle a un hombre un pescado ...", etc. –

5

Para una única matriz de dimensión, se utiliza la propiedad Length:

int size = theArray.Length; 

Para múltiples matrices de dimensión Length la propiedad devuelve el número total de elementos de la matriz. Usted puede utilizar el método GetLength para obtener el tamaño de una de las dimensiones:

int size0 = theArray.GetLength(0); 
7

durante 1 arreglo unidimensional

int[] listItems = new int[] {2,4,8}; 
int length = listItems.Length; 

de matriz multidimensional

int length = listItems.Rank; 

Para obtener el tamaño de 1 dimensión

int length = listItems.GetLength(0); 
+1

La propiedad 'Rank' no devuelve el número de elementos, devuelve el número de dimensiones. – Guffa

1

dice así: 1D:

type[] name=new type[size] //or =new type[]{.....elements...} 

2D:

type[][]name=new type[size][] //second brackets are emtpy 

entonces como se utiliza esta matriz:

name[i]=new type[size_of_sec.Dim] 

o Se puede declarar algo así como una matriz

type[ , ] name=new type [size1,size2] 
2

En la mayoría de los casos generales se usan "Longitud" y "Recuento".

Matriz:

int[] myArray = new int[size]; 
int noOfElements = myArray.Length; 

lista con tipo de matriz:

List <int> myArray = new List<int>(); 
int noOfElements = myArray.Count; 
Cuestiones relacionadas