Los bucles permiten ejecutar un bloque de código varias veces seguidas. Se utilizan para muchas cosas como por ejemplo recorrer arrays y listas de elementos.
Vamos a ver 3, que son los más utilizados y con estos 3 bucles podremos hacer casi todo lo que queramos con relación a los bucles.
- While, el más generico y siempre una buena opción.
- For, muy útil cuando sabes exactamente cuántas veces quieres iterar un bucle.
- Foreach, muy útil para iterar sobre estructuras de datos, aunque presenta ciertas restricciones.
Cualquier otro tipo de bucle puede ser reescrito como un bucle while.
while (condition)
{
// code
}
Ejemplo:
int numero = 0;
while (numero != 7) //mientras la variable numero sea distinta de 7 hara lo que hay entre paréntesis
{
numero++; //sumamos uno a la variable
}
Las variables declaradas en la inicialización tienen como scope el código dentro del bucle y la condición y modificación, no pueden ser accedidas fuera del bucle.
for (initialization; condition; modification)
{
// code
}
Ejemplo:
for(int i=0; i<10; ++i)
Usar foreach puede ayudar al compilador a optimizar e incluso a generar código multithread.
foreach (Type nameOfObj in arrayToIterate)
{
// code where we can use nameOfObj
}
Ejemplo:
// Declaro el array de 10 elementos de tipo int y le doy los valores de 1 a 10
int[] myArray = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (int number in myArray)
{ //por cada numero en el array escribo el valor
Console.WriteLine(“myArray has {0} inside”, number);
}
Si en cualquier punto dentro de un bucle se ejecuta un return, se sale de la función.
Hay 2 keywords que se pueden usar dentro de los bucles para modificar su comportamiento por defecto: continue y break.
Continue moverá el puntero de ejecución a la condición del bucle y continuará con la siguiente iteración (si la condición no se cumple), saltándose el resto de código que quede dentro del bucle a ejecutar en esa iteración.
Break saldrá del bucle independientemente de la condición, colocándose en la primera instrucción justo después del bucle

