Tutorial de matrices de C#: crear, declarar, inicializar

โšก Resumen inteligente

Los arrays de C# almacenan una colecciรณn de tamaรฑo fijo de elementos que comparten el mismo tipo de datos bajo un รบnico nombre de variable. Cada elemento se ubica en un รญndice basado en cero, por lo que la declaraciรณn, inicializaciรณn y acceso a los valores se mantienen rรกpidos y predecibles.

  • ๐Ÿ“Œ Definiciรณn: Un array almacena mรบltiples valores de un mismo tipo en posiciones indexadas a las que se accede mediante una รบnica variable.
  • โœ… Declaraciรณn: Un tipo de dato seguido de corchetes y un nombre declara una matriz, por ejemplo, Int32[] values.
  • ๐Ÿ”ข Inicializaciรณn: La nueva palabra clave establece el tamaรฑo, luego cada รญndice recibe un valor como values[0]=1.
  • ๐Ÿ” Acceso: La indexaciรณn basada en cero lee o escribe cualquier elemento, por lo que el primer elemento es values[0] y el conteo comienza en 0.
  • ๐Ÿ” Iteraciรณn: Un bucle foreach recorre cada elemento sin รญndice, lo que evita errores de รญndice fuera de rango en matrices grandes.
  • ๐Ÿค– Asistencia de IA: GitHub Copilot genera cรณdigo repetitivo para matrices, mientras que ML.NET carga matrices numรฉricas como caracterรญsticas para modelos de aprendizaje automรกtico.

Matrices de C#

ยฟQuรฉ es una matriz en C#?

Una matriz se utiliza para almacenar una colecciรณn o serie de elementos. Estos elementos serรกn del mismo tipo.

Entonces, por ejemplo, si tuviera una matriz de valores enteros, la matriz podrรญa ser una colecciรณn de valores como [1, 2, 3, 4]. Aquรญ el nรบmero de elementos de la matriz es 4.

Las matrices son รบtiles cuando desea almacenar una colecciรณn de valores del mismo tipo. Entonces, en lugar de declarar una variable para cada elemento, solo puedes declarar una variable.

Esta variable apuntarรก a un array o lista de elementos, que serรก la encargada de almacenar los elementos del array.

Veamos cรณmo podemos trabajar con matrices en C#. En nuestro ejemplo, declararemos una matriz de nรบmeros enteros y trabajaremos con ellos en consecuencia.

Tenga en cuenta que todo el cรณdigo siguiente se realiza en el archivo Program.cs.

Paso 1) Declarar una matriz: el primer paso es declarar una matriz. Veamos cรณmo podemos lograr esto con el siguiente ejemplo de cรณdigo.

Matrices en C#

Code Explicaciรณn:-

  1. La primera parte es la tipo de datos. Especifica el tipo de elementos utilizados en la matriz. Entonces, en nuestro caso, estamos creando una matriz de nรบmeros enteros.
  2. La segunda parte [], que especifica el rango de la matriz. (La clasificaciรณn es un marcador de posiciรณn que especifica la cantidad de elementos que contendrรก la matriz)
  3. El siguiente es el nombre de la matriz que en nuestro caso es "valores". Tenga en cuenta que ve un subrayado ondulado de color verde, no se preocupe por eso. Eso es solo .Net diciendo que ha declarado una matriz, pero no la estรก usando en ninguna parte.

Paso 2) El siguiente paso es inicializar la matriz. Aquรญ vamos a especificar la cantidad de valores que contendrรก la matriz. Tambiรฉn vamos a asignar valores a cada elemento del array.

Matrices en C#

Code Explicaciรณn:-

  1. Primero, establecemos el nรบmero de elementos que contendrรก la matriz en 3. Entonces, entre corchetes, estamos diciendo que la matriz contendrรก 3 elementos.
  2. Luego, asignamos valores a cada elemento del array. Esto se logra especificando el nombre de la variable y su รญndice. Asรญ, values[0] indica que estamos almacenando un valor en la primera posiciรณn del array. De manera similar, para acceder a la segunda posiciรณn, usamos values[1], y asรญ sucesivamente.

Nota: : โ€“ En Arrays, la posiciรณn del รญndice comienza desde 0.

Paso 3) Ahora mostremos los elementos individuales de la matriz en la Consola. Agreguemos el siguiente cรณdigo para lograr esto.

Matrices en C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code Explicaciรณn:-

Esta es la parte simple en la que simplemente usamos el mรฉtodo Console.WriteLine para enviar cada valor del elemento a la consola.

Tenga en cuenta que nuevamente, accedemos a cada elemento con la ayuda del nombre de la variable de matriz junto con la posiciรณn del รญndice.

Si el cรณdigo anterior se ingresa correctamente y se ejecuta el programa, se mostrarรก el siguiente resultado.

Salida:

Matrices en C#

Desde el resultado, puede ver todos los valores de la matriz que se muestran en la consola.

Cรณmo recorrer un array en C# usando foreach

Leer cada elemento por su รญndice funciona, pero se vuelve tedioso cuando un array contiene muchos valores. El bucle foreach ofrece una forma mรกs limpia de visitar cada elemento de un array en orden sin... traccrea tรบ mismo una variable de รญndice.

La instrucciรณn `foreach` toma cada elemento del array uno a uno y lo copia en una variable de bucle. Luego, se utiliza esa variable dentro del cuerpo del bucle. Dado que el bucle se detiene automรกticamente en el รบltimo elemento, `foreach` elimina el riesgo de leer mรกs allรก del final del array.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

El ejemplo anterior declara e inicializa un array de tres enteros, luego lo recorre con foreach. En cada iteraciรณn, la variable รญt Recibe el siguiente valor y Console.WriteLine lo imprime. La salida son los nรบmeros 1, 2 y 3 en lรญneas separadas.

Puntos clave a recordar sobre el bucle foreach con arrays:

  • La variable del bucle es de solo lectura, por lo que el bucle foreach es mรกs adecuado para leer valores que para modificarlos directamente.
  • Para modificar elementos mientras miraping, en su lugar, utilice un bucle for con un รญndice.
  • El bucle foreach funciona con matrices unidimensionales, matrices multidimensionales y cualquier colecciรณn que admita iteraciรณn.

Matrices multidimensionales en C#

Los arreglos mostrados hasta ahora son unidimensionales, lo que significa que almacenan una simple lista de valores. C# tambiรฉn admite arreglos multidimensionales, que organizan los elementos en una cuadrรญcula de filas y columnas. Un arreglo bidimensional es el formato mรกs comรบn y resulta adecuado para datos como matrices, tableros de juego y tablas.

Se declara una matriz bidimensional colocando una coma dentro de los corchetes. Cada coma adicional aรฑade una dimensiรณn mรกs, por lo que `int[,]` es bidimensional e `int[,,]` es tridimensional. A continuaciรณn, se accede a los elementos con un รญndice por dimensiรณn.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

Aquรญ, la matriz contiene dos filas y dos columnas. El elemento matrix[0, 0] devuelve 1, y matrix[1, 1] devuelve 4. El nรบmero de dimensiones se fija al declarar la matriz, mientras que el tamaรฑo de cada dimensiรณn se establece al crearla.

Matrices irregulares en C#

Un array irregular es un array cuyos elementos son, a su vez, arrays. A diferencia de un array rectangular multidimensional, cada array interno puede tener una longitud diferente, por lo que a menudo se le denomina array de arrays. Esta flexibilidad resulta รบtil cuando las filas contienen, naturalmente, un nรบmero diferente de valores.

Se declara un array irregular con dos pares de corchetes y, a continuaciรณn, se crea cada array interno por separado. El siguiente ejemplo crea un array irregular donde la primera fila contiene tres valores y la segunda, dos.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

La expresiรณn jagged[0][2] lee el tercer elemento de la primera fila, que es 3, y jagged[1][1] lee el segundo elemento de la segunda fila, que es 5. Debido a que cada fila es una matriz separada, las matrices jagged utilizan la memoria de manera eficiente cuando las longitudes de las filas varรญan, aunque necesitan un paso adicional para inicializar cada matriz interna.

Preguntas Frecuentes

La propiedad Length devuelve el nรบmero total de elementos en una matriz de C#. Por ejemplo, values.Length devuelve 3 para una matriz de tres elementos. Para matrices multidimensionales, GetLength(dimension) devuelve el tamaรฑo de cada dimensiรณn especรญfica.

Los arrays de AC# tienen un tamaรฑo fijo al crearse, mientras que las listas crecen y se reducen dinรกmicamente. Los arrays son mรกs rรกpidos para datos fijos y consumen menos recursos, mientras que las listas son mรกs adecuadas para colecciones cuyo nรบmero de elementos cambia en tiempo de ejecuciรณn.

Un array estรกndar de C# almacena elementos de un รบnico tipo declarado, por lo que no se permite mezclar tipos. Para almacenar diferentes tipos, declare un array de tipo object[] o utilice una colecciรณn como ArrayList, aunque ambas opciones sacrifican la seguridad de tipos en tiempo de compilaciรณn.

El mรฉtodo estรกtico Array.Sort ordena los elementos de un array de C# en orden ascendente en su lugar. Pase el array a Array.Sort(values) y use Array.Reverse Posteriormente, se realiza el orden descendente. La clasificaciรณn funciona con nรบmeros, cadenas de texto y otros tipos similares.

Array.Copy duplica un rango de elementos de un array en otro, mientras que el mรฉtodo Clone crea una copia superficial de todo el array. Asignar una variable de array a otra solo copia la referencia, no los elementos subyacentes.

Se produce una excepciรณn IndexOutOfRangeException cuando el cรณdigo accede a una posiciรณn de matriz que no existe, como values[5] en una matriz de tres elementos. Dado que las matrices de C# tienen รญndice base cero, los รญndices vรกlidos van desde 0 hasta Length menos uno. Siempre valide el รญndice primero.

Sรญ. GitHub Copilot sugiere declaraciones de matrices, inicializaciรณn y lรณgica de bucle a partir de un comentario o nombre de mรฉtodo dentro de Visual Studio y VS Code. RevRevise cada sugerencia para determinar el tamaรฑo correcto y los lรญmites del รญndice, ya que Copilot puede introducir errores de uno en uno y errores por estar fuera de rango.

ML.NET representa los vectores de caracterรญsticas y las entradas del modelo como matrices de C#, generalmente matrices de tipo float[]. Los datos de entrenamiento se cargan en matrices o segmentos, y las predicciones devuelven matrices de puntuaciones. El tamaรฑo fijo y la rรกpida indexaciรณn de las matrices las hacen eficientes para los flujos de trabajo de aprendizaje automรกtico.

Resumir este post con: