Inicio > Cursos > C# > Arrays
C#Colecciones y LINQLección 7 de 20

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};
Consejo📏 Los arrays son de tamaño fijo. Si necesitas agregar/quitar elementos, usa List<T>. Los arrays son mejores cuando el tamaño es conocido y fijo.
← Bucles: for, while, foreachList<T> y Colecciones Genéricas →

Practica esta lección

Resuelve los ejercicios del curso de C# en la app, gratis y con corrección automática.

Empezar a practicar