Was ist die beste Vorgehensweise beim Umgang mit Objekten in for- oder foreach-Schleifen? Sollten wir ein Objekt außerhalb der Schleifen erstellen und es erneut (mit neuen ...) neu erstellen oder für jede Schleifeniteration ein neues erstellen?
Beispiel:Bewährte Methode zum Erstellen von Objekten, die in for/foreach-Schleifen verwendet werden
foreach(var a in collection)
{
SomeClass sc = new SomeClass();
sc.id = a;
sc.Insert();
}
oder
SomeClass sc = null;
foreach(var a in collection)
{
sc = new SomeClass();
sc.id = a;
sc.Insert();
}
Was ist besser?
+1 - Objekte sollten nur dort deklariert werden, wo und wann sie benötigt werden. Wenn Sie int i in einer for-Schleife benötigen, deklarieren Sie es innerhalb der for-Schleife nicht an der Spitze des Funktionskörpers. Siehe Code abgeschlossen :). – JonH
Bei der .Net-Variablendeklaration handelt es sich wirklich um Metadaten zur Methode. Die tatsächliche Position, an der die Variable in Code erstellt wird, wirkt sich nur auf den Bereich für den Compiler aus ... Mit anderen Worten gibt es keinen Leistungsunterschied zwischen diesen beiden Beispielen. –
Es gab einmal geringfügige Unterschiede in der IL, die zwischen diesen beiden Schleifen erzeugt wurde (das gleiche gilt für Java und C++), aber nicht genug, um sich darum zu kümmern. Ich bin mir nicht sicher, ob die aktuellen Compiler das geändert haben oder ob die CLR die zusätzliche IL optimiert. –