Qual è la procedura migliore per gestire gli oggetti in for o foreach loop? Dovremmo creare un oggetto fuori dai loop e ricrearlo di nuovo (usando new ...) o crearne uno nuovo per ogni iterazione del ciclo?
Esempio:Procedura consigliata per la creazione di oggetti utilizzati in/foreach loop
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();
}
che è meglio?
+1 - gli oggetti devono essere dichiarati solo dove e quando sono necessari. Se hai bisogno di int i in un ciclo for dichiaralo all'interno del ciclo for non nella parte superiore del corpo della funzione. Vedi codice completo :). – JonH
Nella dichiarazione delle variabili .Net si tratta in realtà di metadati del metodo. L'effettiva posizione in cui la variabile viene creata nel codice influisce solo sull'ambito del compilatore ... In altre parole, non vi è alcuna differenza di prestazioni tra questi due esempi. –
C'era una volta, c'erano leggere differenze nell'IL prodotto tra questi due cicli (lo stesso con Java e C++), sebbene non abbastanza da preoccuparsi. Non sono sicuro se gli attuali compilatori lo abbiano modificato o se il CLR ottimizzi l'extra IL via. –