È meglio dichiarare una variabile utilizzata in un ciclo al di fuori del ciclo piuttosto che all'interno? A volte vedo esempi in cui una variabile viene dichiarata all'interno del ciclo. Ciò causa effettivamente il programma per allocare memoria per una nuova variabile ogni volta che viene eseguito il ciclo? Oppure .NET è abbastanza intelligente da sapere che è davvero la stessa variabile.Le dichiarazioni delle variabili dovrebbero sempre essere posizionate al di fuori di un ciclo?
Ad esempio, vedere il codice seguente da this answer.
public static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[32768];
while (true)
{
int read = input.Read (buffer, 0, buffer.Length);
if (read <= 0)
return;
output.Write (buffer, 0, read);
}
}
Questa versione modificata potrebbe essere più efficace?
public static void CopyStream(Stream input, Stream output)
{
int read; //OUTSIDE LOOP
byte[] buffer = new byte[32768];
while (true)
{
read = input.Read (buffer, 0, buffer.Length);
if (read <= 0)
return;
output.Write (buffer, 0, read);
}
}
Sono d'accordo con la questione portata. Quando qualcuno deve leggere il vecchio codice (o il codice di qualcun altro), è bello avere una variabile con un ambito appropriato. Quando esco dall'ambito, non devo più preoccuparmi di quale potrebbe essere l'ultimo valore di tale variabile. – Torlack
@Torlack: modificherò per risolvere questo problema. –