Welcher davon ist der schnellere/bessere?Eine Variable innerhalb oder außerhalb einer foreach-Schleife deklarieren: Was ist schneller/besser?
Dieses:
List<User> list = new List<User>();
User u;
foreach (string s in l)
{
u = new User();
u.Name = s;
list.Add(u);
}
Oder diese:
List<User> list = new List<User>();
foreach (string s in l)
{
User u = new User();
u.Name = s;
list.Add(u);
}
Mein Neuling-Entwicklung von Fähigkeiten sagt mir, die erste ist besser, aber ein Freund von mir erzählt im falschen mich, konnte aber gib mir keinen guten Grund, warum der zweite besser ist.
Gibt es überhaupt einen Unterschied in der Leistung?
anzumerken, dass es * * ist ein Unterschied, wenn die Variable durch einen Lambda-Ausdruck oder anonym Delegierten erfaßt wird; siehe [Äußere Variablenfalle] (http://stackoverflow.com/q/3416758). – dtb
Können Sie erklären, warum beide in derselben IL kompiliert sind? Ich bin mir ziemlich sicher, dass C# keine variablen Deklarationen bis zur Spitze der Funktion hochhebt, wie es JavaScript tut. – styfle
@styfle hier ist [die Antwort] (http://stackoverflow.com/questions/1884906/declaring-a-variable-inside-or-out-side-an-foreach-loop-which-is-faster-better#comment1785311_1884957) zu Ihre Frage. –