2012-12-13 8 views
23

Mögliche Duplizieren:
using statement with multiple variablesWie schreibt man mehrere Anweisungen?

ich mehr Einweg-Objekt zu verwalten. Die CA2000-Regel fordert mich auf, alle meine Objekte vor dem Verlassen des Bereichs zu entfernen. Ich möchte nicht die .Dispose() Methode verwenden, wenn ich die using-Klausel verwenden kann. In meinem speziellen Methode sollte ich viele schreiben unter Verwendung von in Verwendung:

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

Ist es möglich, dies auf eine andere Art und Weise zu schreiben wie:

using (Person person = new Person(); Adress address = new Address()) 
+1

Was Sie verwenden möchten, wird sehr Verwirrung werden .... es ist auch nicht gültige Syntax. –

Antwort

30

Sie zwei oder mehr Objekte in einer using Aussage erklären können (durch Komma getrennt). Der Nachteil ist, dass sie vom selben Typ sein müssen.

Legal:

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

Illegal:

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

Das Beste, was Sie tun können, ist Nest die Verwendung von Aussagen.

using (Person joe = new Person()) 
using (Address home = new Address()) 
{ 
    // snip 
} 
20

Das Beste, was Sie tun können, ist:

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

Sie können mehrere Objekte in einer einzigen using-Anweisung nur verwenden, wenn sie vom selben Typ sind. Sie können weiterhin mit Anweisungen ohne Klammern verschachteln.

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

} 

Hier ist ein Beispiel eines Mehrfachobjekts ist, mit gleichem Typ Aussage:

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

} 
8

Sie konnte tun

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

aber es ist kaum eine Verbesserung.