SlideShare una empresa de Scribd logo
1 de 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.

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 
Informatica
InformaticaInformatica
Informatica
 
Vectores en power point [recuperado]
Vectores en power point [recuperado]Vectores en power point [recuperado]
Vectores en power point [recuperado]
 
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
 

Destacado

Девятая школьная конференция "Мы - будущее XXI века"
Девятая школьная конференция "Мы - будущее XXI века"Девятая школьная конференция "Мы - будущее XXI века"
Девятая школьная конференция "Мы - будущее XXI века"MBOUSOSH73
 
xRx15 vision wed_200_surgical_momentum
xRx15 vision wed_200_surgical_momentumxRx15 vision wed_200_surgical_momentum
xRx15 vision wed_200_surgical_momentumOPUNITE
 
Угорщина у другій половині XX ст.
Угорщина у другій половині XX ст.Угорщина у другій половині XX ст.
Угорщина у другій половині XX ст.Yura Yatsko
 
XSLT 1 and XPath Quick Reference (from mulberrytech.com)
XSLT 1 and XPath Quick Reference (from mulberrytech.com)XSLT 1 and XPath Quick Reference (from mulberrytech.com)
XSLT 1 and XPath Quick Reference (from mulberrytech.com)FrescatiStory
 
XperienceCertificate_Prana
XperienceCertificate_PranaXperienceCertificate_Prana
XperienceCertificate_PranaUmang Verma
 
XperienceCertificate_CrimsonLake
XperienceCertificate_CrimsonLakeXperienceCertificate_CrimsonLake
XperienceCertificate_CrimsonLakeUmang Verma
 
Xth Std School Certificate
Xth Std School CertificateXth Std School Certificate
Xth Std School CertificateKetsia David
 
Вперед в прошлое! – курс российской власти в XXI веке
Вперед в прошлое! – курс российской власти в XXI векеВперед в прошлое! – курс российской власти в XXI веке
Вперед в прошлое! – курс российской власти в XXI векеVebinarYabloko
 
Xu huong-digital-marketing-in-vn-2016
Xu huong-digital-marketing-in-vn-2016Xu huong-digital-marketing-in-vn-2016
Xu huong-digital-marketing-in-vn-2016Hangmyvn
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview DraftPedro De Almeida
 
X Targi eHandlu - MUSE - Artur Kurasiński
X Targi eHandlu - MUSE - Artur KurasińskiX Targi eHandlu - MUSE - Artur Kurasiński
X Targi eHandlu - MUSE - Artur Kurasińskiecommerce poland expo
 
XXIII Съезд хирургов Украины 21-23.10.2015
XXIII Съезд хирургов Украины 21-23.10.2015XXIII Съезд хирургов Украины 21-23.10.2015
XXIII Съезд хирургов Украины 21-23.10.2015oncoportal.net
 

Destacado (20)

Девятая школьная конференция "Мы - будущее XXI века"
Девятая школьная конференция "Мы - будущее XXI века"Девятая школьная конференция "Мы - будущее XXI века"
Девятая школьная конференция "Мы - будущее XXI века"
 
Addressing the Underlying and Basic Causes of Child Undernutrition
Addressing the Underlying and Basic Causes of Child UndernutritionAddressing the Underlying and Basic Causes of Child Undernutrition
Addressing the Underlying and Basic Causes of Child Undernutrition
 
An Essential Package of School-Based Interventions
An Essential Package of School-Based InterventionsAn Essential Package of School-Based Interventions
An Essential Package of School-Based Interventions
 
XS POWER DRINK
XS POWER DRINKXS POWER DRINK
XS POWER DRINK
 
xRx15 vision wed_200_surgical_momentum
xRx15 vision wed_200_surgical_momentumxRx15 vision wed_200_surgical_momentum
xRx15 vision wed_200_surgical_momentum
 
Угорщина у другій половині XX ст.
Угорщина у другій половині XX ст.Угорщина у другій половині XX ст.
Угорщина у другій половині XX ст.
 
XSLT 1 and XPath Quick Reference (from mulberrytech.com)
XSLT 1 and XPath Quick Reference (from mulberrytech.com)XSLT 1 and XPath Quick Reference (from mulberrytech.com)
XSLT 1 and XPath Quick Reference (from mulberrytech.com)
 
XperienceCertificate_Prana
XperienceCertificate_PranaXperienceCertificate_Prana
XperienceCertificate_Prana
 
XperienceCertificate_CrimsonLake
XperienceCertificate_CrimsonLakeXperienceCertificate_CrimsonLake
XperienceCertificate_CrimsonLake
 
Xth Std School Certificate
Xth Std School CertificateXth Std School Certificate
Xth Std School Certificate
 
Вперед в прошлое! – курс российской власти в XXI веке
Вперед в прошлое! – курс российской власти в XXI векеВперед в прошлое! – курс российской власти в XXI веке
Вперед в прошлое! – курс российской власти в XXI веке
 
Xu huong-digital-marketing-in-vn-2016
Xu huong-digital-marketing-in-vn-2016Xu huong-digital-marketing-in-vn-2016
Xu huong-digital-marketing-in-vn-2016
 
XPDL
XPDL XPDL
XPDL
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview Draft
 
White Roofs Cut Electricity Bills & Mitigates Global Warming
White Roofs Cut Electricity Bills & Mitigates Global WarmingWhite Roofs Cut Electricity Bills & Mitigates Global Warming
White Roofs Cut Electricity Bills & Mitigates Global Warming
 
xyzmo 4 e-Invoicing
xyzmo 4 e-Invoicingxyzmo 4 e-Invoicing
xyzmo 4 e-Invoicing
 
X Targi eHandlu - MUSE - Artur Kurasiński
X Targi eHandlu - MUSE - Artur KurasińskiX Targi eHandlu - MUSE - Artur Kurasiński
X Targi eHandlu - MUSE - Artur Kurasiński
 
XXIII Съезд хирургов Украины 21-23.10.2015
XXIII Съезд хирургов Украины 21-23.10.2015XXIII Съезд хирургов Украины 21-23.10.2015
XXIII Съезд хирургов Украины 21-23.10.2015
 
Xpress PDF Brochure
Xpress PDF BrochureXpress PDF Brochure
Xpress PDF Brochure
 
XST
XSTXST
XST
 

Similar a Xxxxxxxxxxxxxx

Similar a Xxxxxxxxxxxxxx (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)
 

Más de Joselyn Aguirre (20)

Presentacion del video (1)
Presentacion del video (1)Presentacion del video (1)
Presentacion del video (1)
 
Fondo de-pantalla
Fondo de-pantallaFondo de-pantalla
Fondo de-pantalla
 
Presentacion del video
Presentacion del videoPresentacion del video
Presentacion del video
 
Video
VideoVideo
Video
 
Como subir una_imagen_eclipse
Como subir una_imagen_eclipseComo subir una_imagen_eclipse
Como subir una_imagen_eclipse
 
Presentación12
Presentación12Presentación12
Presentación12
 
Presentación13
Presentación13Presentación13
Presentación13
 
Programa14
Programa14Programa14
Programa14
 
Programa5
Programa5Programa5
Programa5
 
Presentación11 vejc
Presentación11 vejc Presentación11 vejc
Presentación11 vejc
 
Programa 10
Programa 10Programa 10
Programa 10
 
sPrograma 9
sPrograma 9sPrograma 9
sPrograma 9
 
Programa8
Programa8Programa8
Programa8
 
Programa4
Programa4Programa4
Programa4
 
Programa 6
Programa 6Programa 6
Programa 6
 
Tutoria
TutoriaTutoria
Tutoria
 
Programa5
Programa5Programa5
Programa5
 
Programa 6
Programa 6Programa 6
Programa 6
 
Programa 2
Programa 2Programa 2
Programa 2
 
Programa 1
Programa 1Programa 1
Programa 1
 

Xxxxxxxxxxxxxx

  • 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.