Soy muy nuevo en C#. Tenía curiosidad sobre cómo este bloque de código imprimía 3 líneas separadas con las 3 palabras en las matrices. ¿Alguien podría explicar cómo funciona?
using System; namespace MyFirstProgram { class Program { static void Main(string[] args) { String[,] parkingLot = {{ "Mustang", "F-150", "Explorer" }, { "Corvette", "Camaro", "Silverado" }, { "Corolla", "Camry", "Rav4" }}; for(int i = 0; i < parkingLot.GetLength(0); i++) { for (int j = 0; j < parkingLot.GetLength(1); j++) { Console.Write(parkingLot[i, j] + " "); } Console.WriteLine(); } Console.ReadKey(); } } }```El método GetLength() devuelve el tamaño de la dimensión pasada:
Obtiene un entero de 32 bits que representa el número de elementos en la dimensión especificada de Array.
Observe que a la primera llamada se le pasa un cero:
parkingLot.GetLength(0)Esto devuelve el número de FILAS en la matriz 2D.
A la segunda llamada se le pasa un uno:
parkingLot.GetLength(1)Lo que le indica el número de COLUMNAS en la matriz 2D.
Quizás este ejemplo ilustre mejor el concepto:
String[,] parkingLot = { { "a", "b", "c" }, { "1", "2", "3" }, { "red", "green", "blue" }, { "cat", "dog", "fish"}, { "A1", "B2", "C3"} }; for(int row = 0; row < parkingLot.GetLength(0); row++) // 5 rows { for (int col = 0; col < parkingLot.GetLength(1); col++) // 3 columns { Console.Write(parkingLot[row, col] + " "); } Console.WriteLine(); }Producción:
abc 1 2 3 red green blue cat dog fish A1 B2 C3Voy a dividir esto en cada línea del código y explicar lo que hace.
String[,] parkingLot = { { "Mustang", "F-150", "Explorer" }, { "Corvette", "Camaro", "Silverado" }, { "Corolla", "Camry", "Rav4" } };parkingLot es una matriz de cadenas multidimensional. Esto significa que esta es una matriz de cadenas que contiene otras matrices de tipo cadena. Piense en cada {} dentro del {} más grande en su propio objeto Array al que se puede acceder.
for (int i = 0; i < parkingLot.GetLength(0); i++)Los bucles for están diseñados para recorrer un número específico de elementos. el entero "i" creado al principio indica que el ciclo comenzará en el índice 0. Comenzamos en 0 porque la indexación de matrices comienza en 0.
La duración de este bucle dura tanto como el número de matrices ({}) en la matriz inicializada. En este caso, debido a que parkingLot contiene 3 matrices, la longitud es 3.
for (int j = 0; j < parkingLot.GetLength(1); j++)Esta parte del código se itera dentro del bucle for que se encuentra encima y se itera sobre cada elemento dentro de una sola matriz. La parte "GetLength(1)" del código toma la longitud de una sola instancia de matriz dentro de la matriz general. Por ejemplo: la primera instancia de matriz en esta matriz multidimensional contiene { "Mustang", "F-150", "Explorer"}, siendo 3 cadenas. Por lo tanto, la longitud también será 3.
Console.Write(parkingLot[i, j] + " ");Aquí, podemos ver que hay una referencia a i y j. Déjame mostrarte lo que sucede paso a paso:
cuando i=0, el código comienza a iterar otro bucle, que debe calcular j = 0, j = 1 y j = 2 antes de pasar a i = 1. Esto significa que debe leer cada elemento de la matriz antes de pasar al siguiente formación.
Por ejemplo: decir:
Console.WriteLine();Después de escribir cada elemento en el bucle j, este fragmento de código escribe las respuestas en la consola. Es por eso que cada elemento de las matrices aparece en una línea.
Console.ReadKey();Después de presionar esta tecla, el programa se cierra.
Le sugiero que juegue con las variables y cree sus propias matrices y matrices multidimensionales. De esa manera, puedes ver cómo funcionan y qué no les gusta que hagas con ellos.