¿Cuál es la mejor práctica para tratar con los objetos de los bucles for o foreach? ¿Deberíamos crear un objeto fuera de los bucles y volver a crearlo (usando nuevo ...) o crear uno nuevo para cada iteración de bucle?
Ejemplo:Práctica recomendada para crear objetos utilizados en los bucles for/foreach
foreach(var a in collection)
{
SomeClass sc = new SomeClass();
sc.id = a;
sc.Insert();
}
o
SomeClass sc = null;
foreach(var a in collection)
{
sc = new SomeClass();
sc.id = a;
sc.Insert();
}
¿Qué es mejor?
+1 - los objetos solo deben declararse donde y cuando sean necesarios. Si necesita int i en un ciclo for lo declara dentro del bucle for no en la parte superior del cuerpo de la función. Ver Código Completo :). – JonH
En la declaración de variables .Net es realmente metadatos del método. La ubicación real de donde se crea la variable en el código solo afecta el alcance del compilador ... En otras palabras, no hay diferencia de rendimiento entre estos dos ejemplos. –
Érase una vez, hubo ligeras diferencias en la IL producida entre esos dos bucles (lo mismo con Java y C++), aunque no lo suficiente como para importarle. No estoy seguro si los compiladores actuales han cambiado eso o si el CLR optimiza el IL adicional. –