52

今日、同僚の C# コードを閲覧していたところ、次のものが見つかりました。

    using (MemoryStream data1 = new MemoryStream())
    using (MemoryStream data2 = new MemoryStream())
    {
        // Lots of code..........
     }

usingオブジェクトの寿命の範囲を定義する中括弧のペアが続くステートメントを常に見てきました。コードを書いた私の同僚は、ステートメントの中括弧data1 usingは必要なく、コードはそれらが存在してdata2 usingステートメントをネストした場合と同じことを行うと言いました。では、中括弧を省略するとどうなるでしょうか。

4

8 に答える 8

21

forまたはifステートメントで中括弧を省略した場合も、同じ規則が適用されます。

ちなみに、コンパイルされたコードに反映すると、コンパイラの逆コンパイラによって中かっこが追加されます。

于 2010-08-17T20:25:17.230 に答える
3

同僚が言ったこととまったく同じです。これは、ステートメントをネストすることと同じです。dispose fordata2は、dispose 関数 for の直前に呼び出されdata1ます。

于 2010-08-17T20:25:59.430 に答える