ReSharper generalmente me sugiere eso, y todavía estoy buscando una buena razón de por qué hacerlo.¿Debo declarar las variables lo más cerca posible del alcance donde se utilizarán?
La única cosa que me vino a la mente es que la declaración de acercarlo al alcance se va a utilizar, puede evitar la inicialización en algunos casos en que no sea necesario (debido a una condición, etc.)
algo relacionado con esto es la siguiente:
int temp;
foreach (var x in collection) {
temp = x.GetValue();
//Do something with temp
}
¿es realmente diferente que
foreach (var x in collection) {
int temp = x.GetValue();
//...
}
quiero decir, no es el segundo código más caro, ya que es la asignación memoria cada vez? ¿O ambos son lo mismo? Por supuesto, después de terminar el ciclo, en el segundo código el recolector de basura se ocupará de la variable temp
, pero no en el primero ...
Entonces, ¿no hay ninguna diferencia de rendimiento entre esos dos códigos? (es un 'int', pero podría ser una clase más compleja que requerirá más espacio en la memoria ...) –
@Oscar - Las variables de pila son esencialmente gratuitas, aparte de un costo de inicialización mínimo. –
El compilador puede mover variables declaradas dentro del bucle fuera del bucle de todos modos, así que no, realmente no hay ninguna diferencia de rendimiento. Obtiene legibilidad y mantenibilidad al declararlos al principio del alcance en el que los necesita. –