1. Introducción
Imagina un array normal como una caja larga de pizza, donde todas las porciones están en fila — rico, pero aburrido.
Ahora imagina un horario de trabajo o un tablero de ajedrez. Ahí ya todo está organizado en filas y columnas — o sea, en una tabla. Justo para eso sirven los arrays bidimensionales.
En la vida real, los arrays bidimensionales están por todas partes:
- Tablas con sueldos de empleados (filas — empleados, columnas — meses).
- Una imagen en pantalla (cada "celda" — color de un píxel, tiene dos coordenadas: X y Y).
- Cálculos matriciales y procesamiento de datos.
- Tablero de ajedrez o campo para tres en raya.
A veces a los arrays bidimensionales se les llama matriz (ese nombre viene de las mates).
Hay un montón de sitios donde como programador vas a necesitar un array bidimensional. Casi cualquier juego de mesa es un array bidimensional listo: «Ajedrez», «Damas», «Tres en Raya», «Batalla Naval»:
El tablero de «Ajedrez» o «Batalla Naval» es tan perfecto para arrays bidimensionales que ni hecho a propósito, donde para las coordenadas de las casillas solo tienes que usar números. No «peón e2 → e4», sino «peón (4,1) → (4,3)». Así te va a resultar más fácil como programador.
2. Sintaxis para declarar arrays bidimensionales
Solo da miedo hasta que lo declaras por primera vez. Vamos paso a paso.
Regla general
tipo[,] nombreArray;
Aquí la coma , dentro de los corchetes — no es un error del compilador después de una noche con café, sino que indica: el array es bidimensional.
Ejemplos
int[,] matriz;
double[,] tablaNotas;
string[,] tableroAjedrez;
Creando un array
Le damos tamaño: número de filas y columnas.
matriz = new int[3, 4]; // 3 filas, 4 columnas
Esto es una tabla 3x4: imagina una hoja de Excel con 3 filas y 4 columnas.
Puedes declarar la variable y crear el array bidimensional de una vez:
int[,] matriz = new int[3, 4];
Puedes inicializarlo directamente con valores (igual que con los unidimensionales):
int[,] ejemplo = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// Tabla de 3 filas, 3 columnas
Importante: TODAS las filas deben tener la misma longitud al inicializar así. No puedes hacer la primera fila de 3 elementos y la segunda de 2.
Esquema visual
┌─────┬─────┬─────┬─────┐
│ 0 │ 1 │ 2 │ 3 │ ← columnas (Columns)
├─────┼─────┼─────┼─────┤
│ 0,0 │0,1 │0,2 │0,3 │ ← fila 0 (Row 0)
├─────┼─────┼─────┼─────┤
│ 1,0 │1,1 │1,2 │1,3 │ ← fila 1 (Row 1)
├─────┼─────┼─────┼─────┤
│ 2,0 │2,1 │2,2 │2,3 │ ← fila 2 (Row 2)
└─────┴─────┴─────┴─────┘
Cada elemento se indica con un par de índices [fila, columna].
3. Indexación y acceso a los elementos
En un array bidimensional, para acceder a un elemento tienes que poner dos índices:
- El primero — número de fila
- El segundo — número de columna
matriz[1, 2] = 99; // En la segunda fila (índice 1), tercera columna (índice 2)
Si eres de ajedrez, recuerda: la indexación empieza en cero. O sea, el primer elemento es [0, 0].
Escribir y leer
int[,] datos = new int[5, 2];
datos[1, 1] = 5; // escribir
int valor = datos[1, 1]; // leer
Así se ve en la memoria:
4. Rellenar un array bidimensional
Vamos a escribir un código que rellene una matriz con números del 1 al 12, para que veas cómo va la cosa.
int[,] matriz = new int[3, 4];
int valor = 1;
for (int fila = 0; fila < 3; fila++)
{
for (int col = 0; col < 4; col++)
{
matriz[fila, col] = valor;
valor++;
}
}
Aquí el bucle exterior recorre las filas, el interior — las columnas.
Ilustración:
Después de ejecutar:
┌────┬────┬────┬────┐
│ 1 │ 2 │ 3 │ 4 │
├────┼────┼────┼────┤
│ 5 │ 6 │ 7 │ 8 │
├────┼────┼────┼────┤
│ 9 │10 │11 │12 │
└────┴────┴────┴────┘
5. Dimensiones: obtener el número de filas y columnas
Muchas veces necesitas saber el tamaño del array "al vuelo". En C# tienes el método GetLength() para eso.
int[,] matriz = new int[3, 4];
int filas = matriz.GetLength(0); // número de filas (primera dimensión) - 3
int columnas = matriz.GetLength(1); // número de columnas (segunda dimensión) - 4
Console.WriteLine($"Filas: {filas}, Columnas: {columnas}");
no lo confundas con Length — en un array bidimensional es el número total de todos los elementos (filas × columnas).
6. Mostrar un array bidimensional en pantalla
Para mostrar una tabla bidimensional normalmente usas dos bucles — es como dibujar un laberinto en la consola. Ejemplo:
for (int fila = 0; fila < matriz.GetLength(0); fila++)
{
for (int col = 0; col < matriz.GetLength(1); col++)
{
Console.Write(matriz[fila, col] + "\t"); // "\t" — tabulación para que quede bonito
}
Console.WriteLine(); // salto de línea
}
Ejemplo de salida:
1 2 3 4
5 6 7 8
9 10 11 12
Por cierto, aquí ya sabes cómo "dibujar" tablas chulas con solo un par de líneas de código!
7. Arrays multidimensionales
Y un dato curioso sobre arrays, que seguro ya te imaginas. Si puedes hacer un array bidimensional, ¿puedes hacer uno tridimensional?
Sí, puedes crear arrays de cualquier dimensión. A estos se les llama multidimensionales.
Cómo declarar arrays multidimensionales
Solo tienes que poner el número de dimensiones que quieras, separadas por comas:
int[,,,] matriz = new int[2, 3, 4, 5];
Aquí tenemos un array de cuatro dimensiones:
- 2 elementos en la primera coordenada,
- 3 — en la segunda,
- 4 — en la tercera,
- 5 — en la cuarta.
En memoria, ese array es como un gran “cubo” de datos, empaquetado uno tras otro.
Cómo acceder a los elementos
Accedes a un elemento poniendo todos los índices a la vez:
matriz[0, 1, 2, 3] = 42;
int valor = matriz[1, 2, 0, 4];
- Los índices empiezan en cero, como siempre en C#.
- En ese array hay en total 2 × 3 × 4 × 5 = 120 elementos.
Ejemplos prácticos de arrays multidimensionales
- 2D — tablas, tableros de ajedrez, imágenes.
- 3D — “cubos” en gráficos por ordenador, datos para cálculos científicos (por ejemplo, temperatura en distintos puntos del espacio y tiempo).
- 4D y más — se usan poco, pero aparecen en mates avanzadas, simulaciones, machine learning y demás.
GO TO FULL VERSION