Bucles para recorrer arreglos en C#

Clase 17 de 32Fundamentos de C# con NET Core 2.1

Resumen

Domina cómo recorrer arreglos con confianza: de while y do-while a for y foreach. Verás cómo evitar fallos por índices, escribir código más legible y apoyarte en Visual Studio Code para renombrar métodos con F2 y formatear con Alt+Shift+F para mantener todo claro y coherente.

¿Qué cambia entre while y do-while al recorrer arreglos?

Ambos producen el mismo resultado si la lógica del contador es correcta, pero se comportan distinto: do-while garantiza al menos una ejecución. El punto crítico es dónde incrementas el contador. Colocarlo antes o después de la comparación altera qué elemento se imprime primero y puede romper la lógica.

// while
int contador = 0;
while (contador < arregloCursos.Length)
{
    // imprimir arregloCursos[contador].
    contador++;
}

// do-while
contador = 0;
do
{
    // imprimir arregloCursos[contador].
    contador++;
} while (contador < arregloCursos.Length);

// Variante riesgosa: cambia la lógica del flujo
contador = 0;
while (++contador < arregloCursos.Length)
{
    // aquí se salta la posición 0.
}

¿Cómo afecta el incremento del contador?

  • Incrementar después imprime desde la posición cero de forma natural.
  • Incrementar antes puede saltar elementos e introducir errores.
  • Usar contador++ en distintos lugares cambia la semántica del bucle.
  • Mantén consistencia para preservar la intención del recorrido.

¿Cómo ayuda el editor a mantener coherencia?

  • Renombrar métodos con F2 o con la opción Rename Symbol actualiza todas las referencias.
  • Formatear con Alt+Shift+F alinea el código y reduce confusiones visuales.

¿Cómo se estructura un for seguro y legible?

El for condensa inicialización, condición e incremento en una sola línea. Esto mejora la lectura y deja clara la secuencia: crear índice, validar condición, ejecutar tarea e incrementar. Sin embargo, un pequeño cambio en la condición puede causar acceso fuera de rango.

for (int i = 0; i < arregloCursos.Length; i++)
{
    // imprimir arregloCursos[i].
}

// Error común: acceso fuera de rango
for (int i = 0; i <= arregloCursos.Length; i++)
{
    // podría intentar acceder a arregloCursos[Length], que no existe.
}

// Flexibilidad: incrementos personalizados
for (int i = 0; i < arregloCursos.Length; i += 2)
{
    // recorrer de dos en dos si así se requiere.
}

¿Qué buenas prácticas evitan errores con for?

  • Usar < en lugar de <= al comparar con Length.
  • Preferir nombres cortos como i para contadores por legibilidad.
  • Mantener la lógica de incremento simple (i++) salvo que tengas un motivo claro para cambiarla.
  • Probar la salida para validar que el recorrido imprime lo esperado.

¿Por qué foreach reduce errores al recorrer arreglos?

Con foreach no gestionas índices ni longitudes. Iteras directamente cada elemento, lo que hace el código más breve, claro y resistente a errores por límites. Además, se menciona un impacto notable a nivel de memoria, aunque el objetivo principal aquí es claridad y seguridad.

foreach (var curso in arregloCursos)
{
    // imprimir curso.
}

¿Qué ventajas ofrece foreach en este escenario?

  • Elimina riesgos de <= o de desbordes por índice.
  • Mejora la legibilidad: expresa la intención “para cada curso”.
  • Reduce el esfuerzo cognitivo al no manejar i ni contador.
  • Es ideal cuando no necesitas la posición del elemento.

¿Tú con cuál bucle te quedas para recorrer arreglos y por qué? Comparte tu experiencia y cuéntanos qué prácticas te han ayudado a evitar errores de índice.