Arrays
Los arrays en C# son la estructura de datos más básica: una secuencia de elementos del mismo tipo en posiciones de memoria contiguas. Su tamaño se define al crearlos y no puede cambiar. La ventaja es acceso por índice en O(1) (instantáneo sin importar el tamaño), y en memoria son la estructura más eficiente.
La desventaja es que si necesitas más elementos de los previstos, debes crear un nuevo array más grande y copiar todo.
C# 8 introdujo índices desde el final con el operador ^ (circunflejo): arr[^1] es el último elemento, arr[^2] el penúltimo, sin necesidad de escribir arr[arr.Length - 1]. Los rangos (slices) con .. permiten extraer subsecciones: arr[1..4] extrae los elementos del índice 1 al 3, arr[2..] desde el índice 2 hasta el final. Arrays 2D (matrices) se declaran con int[,] y son ideales para representar grids o tableros en videojuegos.
// Array de enteros
int[] numeros = new int[5]; // {0, 0, 0, 0, 0}
int[] pares = { 2, 4, 6, 8, 10 };
int[] impares = new int[] { 1, 3, 5, 7, 9 };
// Acceso por índice (empieza en 0)
Console.WriteLine(pares[0]); // 2
Console.WriteLine(pares[^1]); // 10 (último, C# 8+)
Console.WriteLine(pares[^2]); // 8 (penúltimo)
// Modificar
pares[0] = 20;
// Longitud
Console.WriteLine(pares.Length); // 5
// Recorrer
for (int i = 0; i < pares.Length; i++) {
Console.Write($"{pares[i]} ");
}
// Métodos útiles de Array
Array.Sort(impares); // Ordena
Array.Reverse(impares); // Invierte
int idx = Array.IndexOf(pares, 6); // Busca
// Slices (C# 8+)
int[] slice = pares[1..3]; // {4, 6}
int[] desde2 = pares[2..]; // {6, 8, 10}
// Arrays 2D
int[,] matriz = new int[3, 3];
int[,] tablero = { {1,2,3}, {4,5,6}, {7,8,9} };
Console.WriteLine(tablero[1, 2]); // 6
// Array de arrays (jagged)
int[][] jagged = new int[3][];
jagged[0] = new int[] {1, 2};
jagged[1] = new int[] {3, 4, 5};
Practica esta lección
Resuelve los ejercicios del curso de C# en la app, gratis y con corrección automática.
Empezar a practicar