¿Es mejor declarar una variable utilizada en un bucle fuera del bucle en lugar de dentro? A veces veo ejemplos en los que se declara una variable dentro del ciclo. ¿Esto efectivamente causa que el programa asigne memoria para una nueva variable cada vez que se ejecuta el ciclo? O es .NET lo suficientemente inteligente como para saber que en realidad es la misma variable.¿Las declaraciones de variables siempre deben colocarse fuera de un bucle?
Por ejemplo, vea el siguiente código desde this answer.
public static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[32768];
while (true)
{
int read = input.Read (buffer, 0, buffer.Length);
if (read <= 0)
return;
output.Write (buffer, 0, read);
}
}
¿Sería esta versión modificada más eficiente?
public static void CopyStream(Stream input, Stream output)
{
int read; //OUTSIDE LOOP
byte[] buffer = new byte[32768];
while (true)
{
read = input.Read (buffer, 0, buffer.Length);
if (read <= 0)
return;
output.Write (buffer, 0, read);
}
}
Estoy de acuerdo con el tema de alcance. Cuando alguien tiene que leer el código anterior (o el código de otra persona), es bueno tener variables con el alcance adecuado. Cuando salgo del alcance, ya no tengo que preocuparme por cuál será el último valor de esa variable. – Torlack
@Torlack: voy a editar para abordar esto. –