C#では、同一スコープかつ複数のusingステートメントを、連続して記述することもできます。 これは、ブレース{...}
を省略したif文と同様、単にブレースを省略したusingを記述するものです。
同一スコープかつ複数のusingステートメントでオブジェクトを使用する
using System;
using System.IO;
class Sample {
static void Main()
{
// 同一スコープで複数のusingステートメント
using (Stream fromStream = File.OpenRead("source.txt"))
using (Stream toStream = File.OpenWrite("dest.txt")) {
fromStream.CopyTo(toStream);
}
// 上記のコードは以下と同じ
using (var fromStream = File.OpenRead("source.txt"))
using (var toStream = File.OpenWrite("dest.txt"))
fromStream.CopyTo(toStream);
// 比較として上記と同じ構造の構文をifに置き換えると次のようになる
if (true)
if (true) {
Console.WriteLine(true);
}
if (true)
if (true)
Console.WriteLine(true);
}
}