C# 8.0以降では、usingステートメントをローカル変数宣言形式にしたものであるusing宣言を使用することができます。 これはスコープがメソッド内全域となるusingステートメントを記述するものと同様で、見かけ上はvar
やconst
などのローカル宣言のように記述することができます。
ローカル変数宣言形式のusingステートメント(using宣言)でオブジェクトを使用する C# 8.0
using System;
using System.IO;
class Sample {
static void Main()
{
// "source.txt"を読み込むストリームを作成し、使用し終わったら破棄する
using var fromStream = File.OpenRead("source.txt");
// "dest.txt"に書き込むストリームを作成し、使用し終わったら破棄する
using var toStream = File.OpenWrite("dest.txt");
// fromStreamの内容をtoStreamにコピーする
// (ファイルsource.txtの内容をdest.txtにコピーする)
fromStream.CopyTo(toStream);
// ローカル変数のスコープから抜ける(メソッドから抜ける)時点で
// using宣言されたオブジェクトに対してDisposeメソッドが呼び出される
}
}