1. ホーム
  2. c#

[解決済み】C#の "using "の使い方は?

2022-03-25 10:48:39

質問

ユーザー名 ココス という素晴らしい答えが返ってきました。 C#の隠れた機能 を挙げて質問します。 using というキーワードがあります。それについて詳しく説明してもらえますか?の用途は何ですか? using ?

解決方法は?

の原因は using ステートメントは、オブジェクトがスコープ外に出たときにすぐに破棄されるようにするためで、これを確実に行うための明示的なコードは必要ありません。

のように C#のusingステートメントを理解する(codeproject) IDisposableを実装したオブジェクトを使用する(microsoft) の場合、C#コンパイラが変換するのは

using (MyResource myRes = new MyResource())
{
    myRes.DoSomething();
}

になります。

{ // Limits scope of myRes
    MyResource myRes= new MyResource();
    try
    {
        myRes.DoSomething();
    }
    finally
    {
        // Check for a null resource.
        if (myRes != null)
            // Call the object's Dispose method.
            ((IDisposable)myRes).Dispose();
    }
}

C# 8では、"という新しい構文が導入されています。 宣言の使用 となります。

using宣言とは、usingキーワードを前に置いた変数宣言のことである。この宣言は、宣言された変数がスコープの終端で破棄されることをコンパイラに伝えます。

つまり、上記と同等のコードは次のようになります。

using var myRes = new MyResource();
myRes.DoSomething();

そして、制御が包含スコープ(通常はメソッドだが、コードブロックでもよい)から離れるとき。 myRes は破棄されます。