23

重複の可能性:
複数の変数を持つステートメントの使用

管理する使い捨てオブジェクトがいくつかあります。CA2000 ルールでは、スコープを終了する前にすべてのオブジェクトを破棄するよう求められます。.Dispose()using 句を使用できる場合は、メソッドを使用したくありません。私の特定の方法では、using で多くの using を記述する必要があります。

using (Person person = new Person()) {
    using (Adress address = new Address()) { 
        // my code
    }
}

これを次のような別の方法で書くことは可能ですか:

using (Person person = new Person(); Adress address = new Address())
4

4 に答える 4

30

1 つのステートメントで 2 つ以上のオブジェクトを宣言できusingます (カンマで区切ります)。欠点は、それらが同じタイプでなければならないことです。

法的:

using (Person joe = new Person(), bob = new Person())

違法:

using (Person joe = new Person(), Address home = new Address())

最善の方法は、using ステートメントをネストすることです。

using (Person joe = new Person())
using (Address home = new Address())
{
  // snip
}
于 2012-12-13T15:41:04.037 に答える
20

あなたができる最善のことは:

using (Person person = new Person())
using (Address address = new Address())
{ 
    // my code
}
于 2012-12-13T15:37:31.710 に答える
8

あなたができる

using (IDisposable iPerson = new Person(), iAddress = new Address())
{
    Person person = (Person)iPerson;
    Address address = (Address)iAddress;
    //  your code
}

しかし、それはほとんど改善されていません。

于 2012-12-13T15:44:35.860 に答える
6

単一の using ステートメントで複数のオブジェクトを使用できるのは、それらが同じ型である場合のみです。ブラケットを使用せずに using ステートメントをネストすることもできます。

using (Person person = new Person())
using (Address address = new Address())
{

}

以下は、ステートメントを使用する同じタイプの複数オブジェクトの例です。

using (Person p1 = new Person(), p2 = new Person())
{

}
于 2012-12-13T15:39:55.417 に答える