Declaración e inicialización de arrays 2D
Parte de la sección Lógica y Flujo del Journey de C# de Coddy. Lección 2 de 66.
Una matriz 2D en C# se puede crear utilizando matrices dentadas, que son matrices de matrices y te permiten almacenar datos en una estructura similar a una cuadrícula.
Para crear una matriz escalonada de enteros con 3 filas y 4 columnas:
int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];El código anterior crea un array 2D que tiene este aspecto (todos los elementos se inicializan en 0):
[0, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]Inicializa un array irregular con valores:
int[][] matrix = new int[2][];
matrix[0] = new int[] {1, 2, 3};
matrix[1] = new int[] {4, 5, 6};Esto crea un array bidimensional con 2 filas y 3 columnas, que contiene los valores:
[1, 2, 3]
[4, 5, 6]Para obtener el número de filas y columnas:
int rows = matrix.Length; // Devuelve 2
int columns = matrix[0].Length; // Devuelve 3 (para la primera fila)Acceder a los elementos de un array bidimensional requiere dos índices: uno para la fila y otro para la columna.
Asigna un valor a una posición específica (fila 1, columna 2):
grid[1][2] = 42;Lee un valor desde una posición específica (row 0, columna 3):
int value = grid[0][3];Recuerda que los índices de los arrays empiezan en 0, por lo que los rangos válidos son:
- Filas: 0 a 2 (para un array de 3 filas)
- Columnas: 0 a 3 (para un array de 4 columnas)
Si intentas acceder a un elemento fuera de estos rangos (como grid[3][2]), obtendrás una IndexOutOfRangeException.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arrays multidimensionales
Conceptos básicos de arrays 2DDeclaración e inicialización de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DArrays irregularesOperaciones comunes con matricesRepaso: arrays multidimensionales4Técnicas de control de flujo
Retornos anticipadosCláusulas de guardaSentencias de salto (goto)Break y ContinueAplanar condicionales anidados7Operadores lógicos avanzados
Evaluación de cortocircuitoOperadores lógicos condicionalesPrecedencia de operadoresRepaso: operadores avanzados2Toma de decisiones avanzada
Múltiples condicionesLógica booleana complejaComparación entre If y SwitchSentencias Switch anidadasRepaso: decisiones avanzadas5Manejo de excepciones
Fundamentos de Try-CatchTipos de excepcionesMúltiples bloques CatchTrabajo con archivosBloque FinallyUso de Using frente a Try-FinallyExcepciones personalizadasRepaso: manejo de errores3Mejoras de bucles
Rendimiento de buclesIteración de estructuras complejasCada tipo de bucleRefactorización de buclesRepaso: bucles optimizados6Manejo de valores nulos
Conceptos básicos de referencias nulasTipos de valor anulablesPatrones de comprobación de valores nulosProgramación defensivaRepaso: seguridad frente a valores nulosPractica por tu cuenta: Compilador de C# online