Ist es besser, eine Variable, die in einer Schleife außerhalb der Schleife verwendet wird, lieber als im Inneren zu deklarieren? Manchmal sehe ich Beispiele, in denen eine Variable innerhalb der Schleife deklariert wird. Führt dies dazu, dass das Programm bei jeder Ausführung der Schleife Speicher für eine neue Variable reserviert? Oder ist .NET intelligent genug, um zu wissen, dass es sich wirklich um dieselbe Variable handelt.Sollen Variablenangaben immer außerhalb einer Schleife stehen?
Zum Beispiel den Code unten von 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);
}
}
Wäre diese modifizierte Version effizienter?
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);
}
}
ich mit dem Umfang Ausgabe zustimmen. Wenn jemand alten Code (oder Code von jemand anderem) lesen muss, ist es nett, eine Variable mit dem richtigen Umfang zu haben. Wenn ich den Bereich verlasse, muss ich mich nicht mehr darum kümmern, was der letzte Wert dieser Variablen sein könnte. – Torlack
@Torlack: Ich werde bearbeiten, um dies zu adressieren. –