Il mio metodo ritorna in molti punti. Costruisco newData durante l'esecuzione anche in molti punti. Indipendentemente da dove torno, devo salvare e memorizzare il risultato costruito. Da non perdere "return" Ho appena circondato il codice con il blocco try-finally, quindi ora sono sicuro che i nuovi dati verranno archiviati.è consigliabile utilizzare try-finally solo per assicurarsi che qualcosa venga eseguito al termine del metodo?
List<X> newData = new List<X>();
try
{
....
update newData
.....
return;
.....
....
update newData
....
update newData
return;
.....
return;
} finally
{
// copy newData to data
}
Ma non rilevo eccezioni e questo codice non è destinato a funzionare con eccezioni. È accettabile in generale o puoi suggerire un altro approccio migliore?
Sembra che si possa usare una [istruzione switch] (http://msdn.microsoft.com/en-us/library/06tc147t%28v=vs.100%29.aspx). Non vedo perché è necessario tornare immediatamente. –
È accettabile solo se funziona come previsto. Se non funziona, prova a rifarlo in funzioni più piccole. Se lo fa, qual è il problema? Non posso dare alcun suggerimento specifico senza vedere il codice sorgente più dettagliato. – Flaise
A meno che qualcuno non tocchi la presa, il blocco 'finally' viene eseguito in ogni caso e il codice funzionerà come previsto; tuttavia, come già sottolineato da altri, esistono modi migliori per strutturare il codice. –