3

私はこれを見る:

using (StreamWriter sw = new StreamWriter("file.txt"))
{
     // d0 w0rk s0n
}

私が情報を見つけようとすることはすべて、これが何をしているのかを説明するものではなく、代わりに名前空間に関するものを私に与えてくれます。

4

5 に答える 5

12

(名前空間に関するusingディレクティブの代わりに)usingステートメントのドキュメントを確認したい。

try基本的には、ブロックが/finallyブロックに変換さsw.Dispose()れ、finallyブロックで呼び出されることを意味します(適切なヌルチェックを使用)。

実装する型を扱う場合はいつでもusingステートメントを使用できます。IDisposable通常は、責任を負う使い捨てオブジェクトに使用する必要があります。

構文に関するいくつかの興味深い点:

  • 1つのステートメントで複数のリソースを取得できます。

    using (Stream input = File.OpenRead("input.txt"),
           output = File.OpenWrite("output.txt"))
    {
        // Stuff
    }
    
  • 変数に割り当てる必要はありません。

    // For some suitable type returning a lock token etc
    using (padlock.Acquire())
    {
        // Stuff
    }
    
  • 中かっこなしでネストできます。インデントを回避するのに便利です

    using (TextReader reader = File.OpenText("input.txt"))
    using (TextWriter writer = File.CreateText("output.txt"))
    {
        // Stuff
    }
    
于 2010-03-30T19:57:33.633 に答える
10

using構文は、基本的に、using内のオブジェクトに対してdisposeを自動的に呼び出すための構文ラッパーです。たとえば、上記のコードは大まかに次のように変換されます

StreamWriter sw = new StreamWriter("file.text");
try {
  // do work 
} finally {
  if ( sw != null ) {
    sw.Dispose();
  }
}
于 2010-03-30T19:58:17.540 に答える
5

あなたの質問は仕様のセクション8.13によって答えられます。

于 2010-03-30T19:58:40.303 に答える
2

どうぞ: http: //msdn.microsoft.com/en-us/library/yh598w02.aspx

基本的に、usingスコープの最後にIDisposableインターフェースのDisposeメンバーを自動的に呼び出します。

于 2010-03-30T19:58:25.147 に答える
0

このUsingステートメントを確認してください

于 2010-03-30T19:59:46.260 に答える