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: