重複の可能性:
C# のネストされた using ステートメント
私はusing
C# のステートメントの大ファンです。私はこれを見つけます:
using (var foo = new ObjectWhichMustBeDisposed())
{
other code
}
...これよりもはるかに読みやすい:
var foo = new ObjectiWhichMustBeDisposed();
try
{
other code
}
finally
{
foo.Dispose();
}
読みやすくなるだけでなく、ステートメントの後 (つまり、破棄された後) にfoo
変数を誤って使用することも防止されますが、2 番目の例では、破棄された後に使用できます。using
foo
ただし、 の1 つの問題はusing
、大量の破棄可能なオブジェクトが作成されている場合、非常にネストされたコードになる傾向があることです。例えば:
using (var foo = new ObjectWhichMustBeDisposed())
{
using (var bar = new ObjectWhichMustBeDisposed())
{
other code
}
}
両方のオブジェクトが同じタイプの場合、次のusing
ようにそれらを 1 つのステートメントに結合できます。
using (var foo = new ObjectWhichMustBeDisposed(),
bar = new ObjectWhichMustBeDisposed())
{
other code
}
ただし、オブジェクトが同じタイプでない場合、これは機能しません。
私の質問は、次のような同様の目的を達成しても問題ないかどうかです。
using (var foo = new ObjectWhichMustBeDisposed())
using (var bar = new OtherObjectWhichMustBeDisposed())
{
other code
}
この場合、最初の使用後に中括弧はありません (したがって、コードをインデントする必要はありません)。これはコンパイルされ、中かっこのないステートメントと同じように機能すると仮定します。つまり、次のステートメント (この場合は 2 番目) を「本体」として使用します。if
using
それが正しいかどうか誰かが確認できますか?( using ステートメントの説明は役に立ちません)。