¿Cuál de estos es el más rápido/mejor?Declarar una variable dentro o fuera de un bucle foreach: ¿cuál es más rápido/mejor?
Ésta:
List<User> list = new List<User>();
User u;
foreach (string s in l)
{
u = new User();
u.Name = s;
list.Add(u);
}
O esta otra:
List<User> list = new List<User>();
foreach (string s in l)
{
User u = new User();
u.Name = s;
list.Add(u);
}
Mis habilidades novato-desarrollo me dice que el primero es mejor, pero un amigo mío me dice im mal, pero podría No me da una buena razón por la cual el segundo es mejor.
¿Hay alguna diferencia en el rendimiento en absoluto?
Tenga en cuenta que no es * * una diferencia si la variable es capturado por una expresión lambda o delegado anónimo; ver [Trampa de Variable Exterior] (http://stackoverflow.com/q/3416758). – dtb
¿Puede explicar por qué ambos se compilan en la misma IL? Estoy bastante seguro de que C# no eleva las declaraciones de variables hasta la parte superior de la función como lo hace javascript. – styfle
@styfle aquí está [la respuesta] (http://stackoverflow.com/questions/1884906/declaring-a-variable-inside-or-outside-an-foreach-loop-which-is-faster-better#comment1785311_1884957) a tu pregunta. –