ループ内ではなくループ外で使用される変数を宣言する方が良いですか? ループ内で変数が宣言されている例を時々見かけます。これにより、ループが実行されるたびにプログラムが新しい変数にメモリを割り当てるようになりますか? それとも、実際には同じ変数であることを認識できるほど .NET は賢いのでしょうか。
たとえば、この回答の以下のコードを参照してください。
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);
}
}
この変更されたバージョンはさらに効率的でしょうか?
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);
}
}