SlideShare ist ein Scribd-Unternehmen logo
1 von 5
Tutorial de matrices 
Visual Studio .NET 2003 
Personas que lo han encontrado útil: 62 de 98 - Valorar este tema 
Este tutorial describe las matrices y muestra cómo funcionan en C#. 
Archivos de ejemplo 
Vea Ejemplo de matrices para descargar y generar los archivos de ejemplo que se utilizan en este 
tutorial. 
Información adicional 
 Matrices 
 12. Matrices 
 foreach, in 
 Tutorial de clases de colección 
Tutorial 
Este tutorial se divide en las siguientes secciones: 
 Matrices en general 
 Declarar matrices 
 Inicializar matrices 
 Acceso a miembros de matrices 
 Las matrices son objetos 
 Usar foreach con matrices 
Matrices en general 
En las matrices de C#, los índices empiezan en cero. Las matrices de C# funcionan de forma similar a 
como lo hacen en la mayoría de los lenguajes populares; existen, sin embargo, algunas diferencias 
que se deben conocer. 
Cuando se declara una matriz, los corchetes ([]) deben ir después del tipo, no después del 
identificador. Colocar los corchetes después del identificador no es sintácticamente válido en C#. 
int[] table; // not int table[]; 
Otro detalle es que el tamaño de la matriz no forma parte de su tipo, como ocurre en el lenguaje C. 
Esto permite declarar una matriz y asignarle cualquier matriz de objetos int, independientemente 
de la longitud de la matriz. 
int[] numbers; // declare numbers as an int array of any size 
numbers = new int[10]; // numbers is a 10-element array 
numbers = new int[20]; // now it's a 20-element array 
Declarar matrices
C# admite matrices de una dimensión, matrices multidimensionales (matrices rectangulares) y 
matrices de matrices (matrices escalonadas). El siguiente ejemplo muestra cómo declarar diferentes 
tipos de matrices: 
Matrices unidimensionales: 
int[] numbers; 
Matrices multidimensionales: 
string[,] names; 
Matrices de matrices (escalonadas): 
byte[][] scores; 
La declaración de matrices (como se muestra arriba) no crea realmente las matrices. En C#, las 
matrices son objetos (se explica más adelante en este tutorial) cuyas instancias deben crearse. Los 
siguientes ejemplos muestran cómo crear matrices: 
Matrices unidimensionales: 
int[] numbers = new int[5]; 
Matrices multidimensionales: 
string[,] names = new string[5,4]; 
Matrices de matrices (escalonadas): 
byte[][] scores = new byte[5][]; 
for (int x = 0; x < scores.Length; x++) 
{ 
scores[x] = new byte[4]; 
} 
También se pueden utilizar matrices más grandes. Por ejemplo, se puede utilizar una matriz 
rectangular de tres dimensiones: 
int[,,] buttons = new int[4,5,3]; 
Incluso, se pueden combinar matrices rectangulares y escalonadas. Por ejemplo, el siguiente código 
declara una matriz unidimensional que contiene matrices tridimensionales de matrices 
bidimensionales de tipo int: 
int[][,,][,] numbers; 
Ejemplo 
El siguiente es un programa completo en C# que declara y crea instancias de las matrices 
comentadas anteriormente. 
// arrays.cs 
using System; 
class DeclareArraysSample 
{ 
public static void Main() 
{ 
// Single-dimensional array 
int[] numbers = new int[5]; 
// Multidimensional array 
string[,] names = new string[5,4];
// Array-of-arrays (jagged array) 
byte[][] scores = new byte[5][]; 
// Create the jagged array 
for (int i = 0; i < scores.Length; i++) 
{ 
scores[i] = new byte[i+3]; 
} 
// Print length of each row 
for (int i = 0; i < scores.Length; i++) 
{ 
Console.WriteLine("Length of row {0} is {1}", i, 
scores[i].Length); 
} 
} 
} 
Resultado 
Length of row 0 is 3 
Length of row 1 is 4 
Length of row 2 is 5 
Length of row 3 is 6 
Length of row 4 is 7 
Inicializar matrices 
C# proporciona métodos simples y sencillos para inicializar matrices en el momento de la 
declaración encerrando los valores iniciales entre llaves ({}). Los siguientes ejemplos muestran 
diferentes modos de inicializar diferentes tipos de matrices. 
Nota Si no inicializa una matriz en el momento de la declaración, sus miembros se inicializan 
automáticamente con el valor inicial predeterminado para el tipo de matriz. Además, si declara la 
matriz como campo de un tipo, se establecerá con el valor predeterminado null cuando cree la 
instancia del tipo. 
Matrices unidimensionales 
int[] numbers = new int[5] {1, 2, 3, 4, 5}; 
string[] names = new string[3] {"Matt", "Joanne", "Robert"}; 
El tamaño de la matriz se puede omitir, como se indica a continuación: 
int[] numbers = new int[] {1, 2, 3, 4, 5}; 
string[] names = new string[] {"Matt", "Joanne", "Robert"}; 
También se puede omitir el operador new si se utiliza un inicializador como el siguiente: 
int[] numbers = {1, 2, 3, 4, 5}; 
string[] names = {"Matt", "Joanne", "Robert"}; 
Matrices multidimensionales 
int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"} 
}; 
El tamaño de la matriz se puede omitir, como se indica a continuación: 
int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} }; 
string[,] siblings = new string[,] { {"Mike","Amy"}, {"Mary","Albert"} }; 
También se puede omitir el operador new si se utiliza un inicializador como el siguiente: 
int[,] numbers = { {1, 2}, {3, 4}, {5, 6} }; 
string[,] siblings = { {"Mike", "Amy"}, {"Mary", "Albert"} }; 
Matriz escalonada (matriz de matrices) 
Las matrices escalonadas se pueden inicializar como en el siguiente ejemplo: 
int[][] numbers = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} 
}; 
El tamaño de la primera matriz se puede omitir, como se indica a continuación: 
int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} 
}; 
O bien 
int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; 
Observe que no existe sintaxis de inicialización para los elementos de una matriz escalonada. 
Acceso a miembros de matrices 
El acceso a los miembros de una matriz es sencillo y similar al de los miembros de una matriz de C o 
C++. Por ejemplo, el siguiente código crea una matriz denominada numbersy, a continuación, 
asigna un 5 al quinto elemento de la matriz: 
int[] numbers = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; 
numbers[4] = 5; 
El siguiente código declara una matriz multidimensional y asigna el valor 5 al miembro ubicado 
en [1, 1]: 
int[,] numbers = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} }; 
numbers[1, 1] = 5; 
La siguiente es una declaración de una matriz escalonada de una sola dimensión que contiene dos 
elementos. El primer elemento es una matriz de dos enteros, mientras que el segundo es una matriz 
de tres enteros: 
int[][] numbers = new int[][] { new int[] {1, 2}, new int[] {3, 4, 5} 
}; 
La siguiente instrucción asigna 58 al primer elemento de la primera matriz y 667 al segundo 
elemento de la segunda matriz: 
numbers[0][0] = 58; 
numbers[1][1] = 667; 
Las matrices son objetos 
En C#, las matrices son realmente objetos. System.Array es el tipo base abstracto de todos los 
tipos de matrices. Las propiedades y otros miembros de la clase System.Array se pueden utilizar 
cuando sea necesario. Un ejemplo de esto sería utilizar la propiedad Length para obtener la
longitud de una matriz. El siguiente código asigna la longitud de la matriz numbers, que es 5, a una 
variable denominada LengthOfNumbers: 
int[] numbers = {1, 2, 3, 4, 5}; 
int LengthOfNumbers = numbers.Length; 
La clase System.Array proporciona muchos otros métodos y propiedades útiles, como métodos 
para ordenar, buscar y copiar matrices. 
Usar foreach con matrices 
C# dispone de la instrucción foreach. Esta instrucción proporciona un modo simple y limpio de 
iterar en los elementos de una matriz. Por ejemplo, el siguiente código crea una matriz 
denominada numbers y la recorre mediante la instrucción foreach: 
int[] numbers = {4, 5, 6, 1, 2, 3, -2, -1, 0}; 
foreach (int i in numbers) 
{ 
System.Console.WriteLine(i); 
} 
Con matrices multidimensionales, se puede utilizar el mismo método para recorrer los elementos, 
por ejemplo: 
int[,] numbers = new int[3, 2] {{9, 99}, {3, 33}, {5, 55}}; 
foreach(int i in numbers) 
{ 
Console.Write("{0} ", i); 
} 
El resultado de este ejemplo es: 
9 99 3 33 5 55 
Sin embargo, con matrices multidimensionales, utilizar un bucle for anidado proporciona más 
control sobre los elementos de la matriz.

Weitere ähnliche Inhalte

Was ist angesagt?

339012601 ada-4-info-2
339012601 ada-4-info-2339012601 ada-4-info-2
339012601 ada-4-info-2ivan diego
 
Lenguaje de Programacion - Java
Lenguaje de Programacion - JavaLenguaje de Programacion - Java
Lenguaje de Programacion - Javazousbabastre
 
03 uni1-estructuras de datos-arreglos 2 d
03 uni1-estructuras de datos-arreglos 2 d03 uni1-estructuras de datos-arreglos 2 d
03 uni1-estructuras de datos-arreglos 2 dFranco Guamán
 
Presentacion recursividad unidad 2
Presentacion recursividad unidad 2Presentacion recursividad unidad 2
Presentacion recursividad unidad 2eliezerbs
 
Diapositivas tecno
Diapositivas tecnoDiapositivas tecno
Diapositivas tecnodacumo
 
Vectores en power point [recuperado]
Vectores en power point [recuperado]Vectores en power point [recuperado]
Vectores en power point [recuperado]herminiajimenez123
 
01 uni1-estructuras de datos-introduccion a las ed
01 uni1-estructuras de datos-introduccion a las ed01 uni1-estructuras de datos-introduccion a las ed
01 uni1-estructuras de datos-introduccion a las edFranco Guamán
 
Trabajo de tecno
Trabajo de tecnoTrabajo de tecno
Trabajo de tecnoandresto15
 

Was ist angesagt? (11)

339012601 ada-4-info-2
339012601 ada-4-info-2339012601 ada-4-info-2
339012601 ada-4-info-2
 
Lenguaje de Programacion - Java
Lenguaje de Programacion - JavaLenguaje de Programacion - Java
Lenguaje de Programacion - Java
 
Guía nº 8 arreglos
Guía nº 8 arreglosGuía nº 8 arreglos
Guía nº 8 arreglos
 
03 uni1-estructuras de datos-arreglos 2 d
03 uni1-estructuras de datos-arreglos 2 d03 uni1-estructuras de datos-arreglos 2 d
03 uni1-estructuras de datos-arreglos 2 d
 
Presentacion recursividad unidad 2
Presentacion recursividad unidad 2Presentacion recursividad unidad 2
Presentacion recursividad unidad 2
 
Diapositivas tecno
Diapositivas tecnoDiapositivas tecno
Diapositivas tecno
 
Vectores en power point [recuperado]
Vectores en power point [recuperado]Vectores en power point [recuperado]
Vectores en power point [recuperado]
 
Informatica
InformaticaInformatica
Informatica
 
01 uni1-estructuras de datos-introduccion a las ed
01 uni1-estructuras de datos-introduccion a las ed01 uni1-estructuras de datos-introduccion a las ed
01 uni1-estructuras de datos-introduccion a las ed
 
Trabajo de tecno
Trabajo de tecnoTrabajo de tecno
Trabajo de tecno
 
Moreno nathalie actividad4
Moreno nathalie actividad4Moreno nathalie actividad4
Moreno nathalie actividad4
 

Andere mochten auch

Tutoriales de c
Tutoriales de cTutoriales de c
Tutoriales de celidetjc
 
Rosaliadecastro 150220133825-conversion-gate01
Rosaliadecastro 150220133825-conversion-gate01Rosaliadecastro 150220133825-conversion-gate01
Rosaliadecastro 150220133825-conversion-gate01opapaventos
 
Preguntas 60
Preguntas 60Preguntas 60
Preguntas 60elidetjc
 
manipulación de los medios
manipulación de los mediosmanipulación de los medios
manipulación de los mediosFerxoo Vargas
 
Segundo ejemplo de netbeans
Segundo ejemplo de netbeansSegundo ejemplo de netbeans
Segundo ejemplo de netbeanselidetjc
 
DOP AN CAMINI_Tedesco
DOP AN CAMINI_TedescoDOP AN CAMINI_Tedesco
DOP AN CAMINI_TedescoAN Camini
 
Grosse Inventur mit Open Government Data; 4. OGD D-A-CH-LI Konferenz; 24.6.2015
Grosse Inventur mit Open Government Data; 4. OGD D-A-CH-LI Konferenz; 24.6.2015Grosse Inventur mit Open Government Data; 4. OGD D-A-CH-LI Konferenz; 24.6.2015
Grosse Inventur mit Open Government Data; 4. OGD D-A-CH-LI Konferenz; 24.6.2015abs-edi
 
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Nuevas dimensiones de lo soc...
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Nuevas dimensiones de lo soc...UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Nuevas dimensiones de lo soc...
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Nuevas dimensiones de lo soc...CarmitaCT
 
Luis alberto marcellez ramirez
Luis alberto marcellez ramirezLuis alberto marcellez ramirez
Luis alberto marcellez ramirezAlberto Marcellez
 
Información
InformaciónInformación
Informaciónelmunu
 
Ciberbullying eduardo cruz (2)
Ciberbullying eduardo cruz (2)Ciberbullying eduardo cruz (2)
Ciberbullying eduardo cruz (2)Eduardoro28
 
IMPIANTI GIS per il NUOVO PROGETTO IN GUINEA
IMPIANTI GIS per il NUOVO PROGETTO IN GUINEAIMPIANTI GIS per il NUOVO PROGETTO IN GUINEA
IMPIANTI GIS per il NUOVO PROGETTO IN GUINEAGis srl
 

Andere mochten auch (20)

Tutoriales de c
Tutoriales de cTutoriales de c
Tutoriales de c
 
Rosaliadecastro 150220133825-conversion-gate01
Rosaliadecastro 150220133825-conversion-gate01Rosaliadecastro 150220133825-conversion-gate01
Rosaliadecastro 150220133825-conversion-gate01
 
Preguntas 60
Preguntas 60Preguntas 60
Preguntas 60
 
HSP Tingkatan 5
HSP Tingkatan 5HSP Tingkatan 5
HSP Tingkatan 5
 
manipulación de los medios
manipulación de los mediosmanipulación de los medios
manipulación de los medios
 
LIC: NANCY SUAREZ GUAYARA
LIC: NANCY SUAREZ GUAYARALIC: NANCY SUAREZ GUAYARA
LIC: NANCY SUAREZ GUAYARA
 
#Heimatshoppen
#Heimatshoppen#Heimatshoppen
#Heimatshoppen
 
Segundo ejemplo de netbeans
Segundo ejemplo de netbeansSegundo ejemplo de netbeans
Segundo ejemplo de netbeans
 
DOP AN CAMINI_Tedesco
DOP AN CAMINI_TedescoDOP AN CAMINI_Tedesco
DOP AN CAMINI_Tedesco
 
Socialnest
SocialnestSocialnest
Socialnest
 
Grosse Inventur mit Open Government Data; 4. OGD D-A-CH-LI Konferenz; 24.6.2015
Grosse Inventur mit Open Government Data; 4. OGD D-A-CH-LI Konferenz; 24.6.2015Grosse Inventur mit Open Government Data; 4. OGD D-A-CH-LI Konferenz; 24.6.2015
Grosse Inventur mit Open Government Data; 4. OGD D-A-CH-LI Konferenz; 24.6.2015
 
Medidas de posición
Medidas de posición Medidas de posición
Medidas de posición
 
PROYECTO DE AULA
PROYECTO DE AULAPROYECTO DE AULA
PROYECTO DE AULA
 
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Nuevas dimensiones de lo soc...
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Nuevas dimensiones de lo soc...UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Nuevas dimensiones de lo soc...
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Nuevas dimensiones de lo soc...
 
Trabajo exel
Trabajo exelTrabajo exel
Trabajo exel
 
O NADAL
O NADALO NADAL
O NADAL
 
Luis alberto marcellez ramirez
Luis alberto marcellez ramirezLuis alberto marcellez ramirez
Luis alberto marcellez ramirez
 
Información
InformaciónInformación
Información
 
Ciberbullying eduardo cruz (2)
Ciberbullying eduardo cruz (2)Ciberbullying eduardo cruz (2)
Ciberbullying eduardo cruz (2)
 
IMPIANTI GIS per il NUOVO PROGETTO IN GUINEA
IMPIANTI GIS per il NUOVO PROGETTO IN GUINEAIMPIANTI GIS per il NUOVO PROGETTO IN GUINEA
IMPIANTI GIS per il NUOVO PROGETTO IN GUINEA
 

Ähnlich wie Tutorial de matrices c#

Ähnlich wie Tutorial de matrices c# (20)

Tema 5 - Estructuras de datos.pdf
Tema 5 - Estructuras de datos.pdfTema 5 - Estructuras de datos.pdf
Tema 5 - Estructuras de datos.pdf
 
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
 
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
 
Arreglos java
Arreglos javaArreglos java
Arreglos java
 
02 Bases Del Lenguaje Java
02   Bases Del Lenguaje Java02   Bases Del Lenguaje Java
02 Bases Del Lenguaje Java
 
Sesion 5
Sesion 5Sesion 5
Sesion 5
 
Arreglos Java
Arreglos JavaArreglos Java
Arreglos Java
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
 
arrays
arraysarrays
arrays
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
 
Transparencias8
Transparencias8Transparencias8
Transparencias8
 
Arreglos
ArreglosArreglos
Arreglos
 
Arreglos
ArreglosArreglos
Arreglos
 
Intro Java 3
Intro Java 3Intro Java 3
Intro Java 3
 
Intro Java 3
Intro Java 3Intro Java 3
Intro Java 3
 
11_Matrices.pptx
11_Matrices.pptx11_Matrices.pptx
11_Matrices.pptx
 
Los 5 fantasticos
Los 5 fantasticosLos 5 fantasticos
Los 5 fantasticos
 
Matlab
MatlabMatlab
Matlab
 
Arreglos (unimensionles y matrices (bidimensionales)
Arreglos (unimensionles y matrices (bidimensionales)Arreglos (unimensionles y matrices (bidimensionales)
Arreglos (unimensionles y matrices (bidimensionales)
 

Mehr von elidetjc

Programa de eclipse
Programa de eclipsePrograma de eclipse
Programa de eclipseelidetjc
 
Programa 2
Programa 2 Programa 2
Programa 2 elidetjc
 
Programa 1
Programa 1Programa 1
Programa 1elidetjc
 
Enmuladores
EnmuladoresEnmuladores
Enmuladoreselidetjc
 
Examen de diagnostico_de_moviles
Examen de diagnostico_de_movilesExamen de diagnostico_de_moviles
Examen de diagnostico_de_movileselidetjc
 
Joselyn lizbeth balderas_aguirre
Joselyn lizbeth balderas_aguirreJoselyn lizbeth balderas_aguirre
Joselyn lizbeth balderas_aguirreelidetjc
 
Examen de diagnostico_de_moviles_2_22
Examen de diagnostico_de_moviles_2_22Examen de diagnostico_de_moviles_2_22
Examen de diagnostico_de_moviles_2_22elidetjc
 
Examen de diagnostico_de_moviles2
Examen de diagnostico_de_moviles2Examen de diagnostico_de_moviles2
Examen de diagnostico_de_moviles2elidetjc
 
Preguntas602
Preguntas602Preguntas602
Preguntas602elidetjc
 
Presentacion de power_de_emuladores2
Presentacion de power_de_emuladores2Presentacion de power_de_emuladores2
Presentacion de power_de_emuladores2elidetjc
 
sooooooooooooooooooffff
sooooooooooooooooooffffsooooooooooooooooooffff
sooooooooooooooooooffffelidetjc
 
Cuestionario prgts
Cuestionario prgtsCuestionario prgts
Cuestionario prgtselidetjc
 

Mehr von elidetjc (20)

Programa de eclipse
Programa de eclipsePrograma de eclipse
Programa de eclipse
 
Codigos
CodigosCodigos
Codigos
 
Programa 2
Programa 2 Programa 2
Programa 2
 
Programa 1
Programa 1Programa 1
Programa 1
 
Tutorial
TutorialTutorial
Tutorial
 
Enmuladores
EnmuladoresEnmuladores
Enmuladores
 
Examen de diagnostico_de_moviles
Examen de diagnostico_de_movilesExamen de diagnostico_de_moviles
Examen de diagnostico_de_moviles
 
Joselyn lizbeth balderas_aguirre
Joselyn lizbeth balderas_aguirreJoselyn lizbeth balderas_aguirre
Joselyn lizbeth balderas_aguirre
 
Examen de diagnostico_de_moviles_2_22
Examen de diagnostico_de_moviles_2_22Examen de diagnostico_de_moviles_2_22
Examen de diagnostico_de_moviles_2_22
 
Examen de diagnostico_de_moviles2
Examen de diagnostico_de_moviles2Examen de diagnostico_de_moviles2
Examen de diagnostico_de_moviles2
 
Preguntas602
Preguntas602Preguntas602
Preguntas602
 
Presentacion de power_de_emuladores2
Presentacion de power_de_emuladores2Presentacion de power_de_emuladores2
Presentacion de power_de_emuladores2
 
Ejem8
Ejem8Ejem8
Ejem8
 
sooooooooooooooooooffff
sooooooooooooooooooffffsooooooooooooooooooffff
sooooooooooooooooooffff
 
software
softwaresoftware
software
 
Ejem5
Ejem5Ejem5
Ejem5
 
Loo toy
Loo toyLoo toy
Loo toy
 
Cuestionario prgts
Cuestionario prgtsCuestionario prgts
Cuestionario prgts
 
Ejemplo 4
Ejemplo 4Ejemplo 4
Ejemplo 4
 
Ejemplo 4
Ejemplo 4Ejemplo 4
Ejemplo 4
 

Tutorial de matrices c#

  • 1. Tutorial de matrices Visual Studio .NET 2003 Personas que lo han encontrado útil: 62 de 98 - Valorar este tema Este tutorial describe las matrices y muestra cómo funcionan en C#. Archivos de ejemplo Vea Ejemplo de matrices para descargar y generar los archivos de ejemplo que se utilizan en este tutorial. Información adicional  Matrices  12. Matrices  foreach, in  Tutorial de clases de colección Tutorial Este tutorial se divide en las siguientes secciones:  Matrices en general  Declarar matrices  Inicializar matrices  Acceso a miembros de matrices  Las matrices son objetos  Usar foreach con matrices Matrices en general En las matrices de C#, los índices empiezan en cero. Las matrices de C# funcionan de forma similar a como lo hacen en la mayoría de los lenguajes populares; existen, sin embargo, algunas diferencias que se deben conocer. Cuando se declara una matriz, los corchetes ([]) deben ir después del tipo, no después del identificador. Colocar los corchetes después del identificador no es sintácticamente válido en C#. int[] table; // not int table[]; Otro detalle es que el tamaño de la matriz no forma parte de su tipo, como ocurre en el lenguaje C. Esto permite declarar una matriz y asignarle cualquier matriz de objetos int, independientemente de la longitud de la matriz. int[] numbers; // declare numbers as an int array of any size numbers = new int[10]; // numbers is a 10-element array numbers = new int[20]; // now it's a 20-element array Declarar matrices
  • 2. C# admite matrices de una dimensión, matrices multidimensionales (matrices rectangulares) y matrices de matrices (matrices escalonadas). El siguiente ejemplo muestra cómo declarar diferentes tipos de matrices: Matrices unidimensionales: int[] numbers; Matrices multidimensionales: string[,] names; Matrices de matrices (escalonadas): byte[][] scores; La declaración de matrices (como se muestra arriba) no crea realmente las matrices. En C#, las matrices son objetos (se explica más adelante en este tutorial) cuyas instancias deben crearse. Los siguientes ejemplos muestran cómo crear matrices: Matrices unidimensionales: int[] numbers = new int[5]; Matrices multidimensionales: string[,] names = new string[5,4]; Matrices de matrices (escalonadas): byte[][] scores = new byte[5][]; for (int x = 0; x < scores.Length; x++) { scores[x] = new byte[4]; } También se pueden utilizar matrices más grandes. Por ejemplo, se puede utilizar una matriz rectangular de tres dimensiones: int[,,] buttons = new int[4,5,3]; Incluso, se pueden combinar matrices rectangulares y escalonadas. Por ejemplo, el siguiente código declara una matriz unidimensional que contiene matrices tridimensionales de matrices bidimensionales de tipo int: int[][,,][,] numbers; Ejemplo El siguiente es un programa completo en C# que declara y crea instancias de las matrices comentadas anteriormente. // arrays.cs using System; class DeclareArraysSample { public static void Main() { // Single-dimensional array int[] numbers = new int[5]; // Multidimensional array string[,] names = new string[5,4];
  • 3. // Array-of-arrays (jagged array) byte[][] scores = new byte[5][]; // Create the jagged array for (int i = 0; i < scores.Length; i++) { scores[i] = new byte[i+3]; } // Print length of each row for (int i = 0; i < scores.Length; i++) { Console.WriteLine("Length of row {0} is {1}", i, scores[i].Length); } } } Resultado Length of row 0 is 3 Length of row 1 is 4 Length of row 2 is 5 Length of row 3 is 6 Length of row 4 is 7 Inicializar matrices C# proporciona métodos simples y sencillos para inicializar matrices en el momento de la declaración encerrando los valores iniciales entre llaves ({}). Los siguientes ejemplos muestran diferentes modos de inicializar diferentes tipos de matrices. Nota Si no inicializa una matriz en el momento de la declaración, sus miembros se inicializan automáticamente con el valor inicial predeterminado para el tipo de matriz. Además, si declara la matriz como campo de un tipo, se establecerá con el valor predeterminado null cuando cree la instancia del tipo. Matrices unidimensionales int[] numbers = new int[5] {1, 2, 3, 4, 5}; string[] names = new string[3] {"Matt", "Joanne", "Robert"}; El tamaño de la matriz se puede omitir, como se indica a continuación: int[] numbers = new int[] {1, 2, 3, 4, 5}; string[] names = new string[] {"Matt", "Joanne", "Robert"}; También se puede omitir el operador new si se utiliza un inicializador como el siguiente: int[] numbers = {1, 2, 3, 4, 5}; string[] names = {"Matt", "Joanne", "Robert"}; Matrices multidimensionales int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
  • 4. string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"} }; El tamaño de la matriz se puede omitir, como se indica a continuación: int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} }; string[,] siblings = new string[,] { {"Mike","Amy"}, {"Mary","Albert"} }; También se puede omitir el operador new si se utiliza un inicializador como el siguiente: int[,] numbers = { {1, 2}, {3, 4}, {5, 6} }; string[,] siblings = { {"Mike", "Amy"}, {"Mary", "Albert"} }; Matriz escalonada (matriz de matrices) Las matrices escalonadas se pueden inicializar como en el siguiente ejemplo: int[][] numbers = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; El tamaño de la primera matriz se puede omitir, como se indica a continuación: int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; O bien int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; Observe que no existe sintaxis de inicialización para los elementos de una matriz escalonada. Acceso a miembros de matrices El acceso a los miembros de una matriz es sencillo y similar al de los miembros de una matriz de C o C++. Por ejemplo, el siguiente código crea una matriz denominada numbersy, a continuación, asigna un 5 al quinto elemento de la matriz: int[] numbers = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; numbers[4] = 5; El siguiente código declara una matriz multidimensional y asigna el valor 5 al miembro ubicado en [1, 1]: int[,] numbers = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} }; numbers[1, 1] = 5; La siguiente es una declaración de una matriz escalonada de una sola dimensión que contiene dos elementos. El primer elemento es una matriz de dos enteros, mientras que el segundo es una matriz de tres enteros: int[][] numbers = new int[][] { new int[] {1, 2}, new int[] {3, 4, 5} }; La siguiente instrucción asigna 58 al primer elemento de la primera matriz y 667 al segundo elemento de la segunda matriz: numbers[0][0] = 58; numbers[1][1] = 667; Las matrices son objetos En C#, las matrices son realmente objetos. System.Array es el tipo base abstracto de todos los tipos de matrices. Las propiedades y otros miembros de la clase System.Array se pueden utilizar cuando sea necesario. Un ejemplo de esto sería utilizar la propiedad Length para obtener la
  • 5. longitud de una matriz. El siguiente código asigna la longitud de la matriz numbers, que es 5, a una variable denominada LengthOfNumbers: int[] numbers = {1, 2, 3, 4, 5}; int LengthOfNumbers = numbers.Length; La clase System.Array proporciona muchos otros métodos y propiedades útiles, como métodos para ordenar, buscar y copiar matrices. Usar foreach con matrices C# dispone de la instrucción foreach. Esta instrucción proporciona un modo simple y limpio de iterar en los elementos de una matriz. Por ejemplo, el siguiente código crea una matriz denominada numbers y la recorre mediante la instrucción foreach: int[] numbers = {4, 5, 6, 1, 2, 3, -2, -1, 0}; foreach (int i in numbers) { System.Console.WriteLine(i); } Con matrices multidimensionales, se puede utilizar el mismo método para recorrer los elementos, por ejemplo: int[,] numbers = new int[3, 2] {{9, 99}, {3, 33}, {5, 55}}; foreach(int i in numbers) { Console.Write("{0} ", i); } El resultado de este ejemplo es: 9 99 3 33 5 55 Sin embargo, con matrices multidimensionales, utilizar un bucle for anidado proporciona más control sobre los elementos de la matriz.