rksoftware

Visual Studio とか C# とかが好きです

C# 8 の確認 - using 宣言

今回は using 宣言 。この仕様はちょっとわかりにくいかもしれません。しかし分かってしまえば間違いもないですし、書かれたコードを見る機会もどんどん増えていくことでしょう。しっかり覚えておきましょう。

公式はこちら

このブログでの目次?はこちら

これまでの using 文

using( ) の後のブロックを抜けると Dispose されます。

class Disposable : IDisposable
{
    public void Dispose() => Console.WriteLine("Dispose");
}

static void Main(string[] args)
{
    using(var disposable = new Disposable())
    {
        Console.WriteLine("1");
    }
    Console.WriteLine("2");
}

ここでは、

1
Dispose
2

と出力されます。

using 宣言

変数の宣言に using をつけます。するとその変数の生存範囲が終わったところで Dispose されます。

class Disposable : IDisposable
{
    public void Dispose() => Console.WriteLine("Dispose");
}

static void Main(string[] args)
{
    {
        using var disposable = new Disposable();
        Console.WriteLine("1");
    }
    Console.WriteLine("2");
}

結果は同じ

1
Dispose
2

になります。

今回の例の様にシンプルな構造で 1 回だけ using が出てくる場合は特にうま味が分からないかもしれません。
普段 C# を書いていて、using が多段になるとインデントが深くなってモヤモヤした気持ちになったことのある方も多くいると思います。そんな時にこの仕様です。なんとインデントが深くなりません。素晴らしいですね。