2012-12-13 13 views
23

Powiel możliwe:
using statement with multiple variablesJak napisać kilka instrukcji użytkowania?

Mam kilka jednorazowy obiekt zarządzania. Reguła CA2000 prosi mnie o usunięcie całego mojego obiektu przed opuszczeniem zakresu. Nie lubię korzystać z metody .Dispose(), jeśli mogę użyć klauzuli using. W moim konkretnym sposobie powinienem napisać wiele używając w użyciu:

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

Czy to możliwe, aby napisać to w inny sposób, jak:

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

To, czego chcesz użyć, stanie się bardzo nieporozumieniem ... to również nie jest poprawna składnia. –

Odpowiedz

30

Można zadeklarować dwie lub więcej obiektów w using rachunku (oddzielone przecinkami). Minusem jest to, że muszą być tego samego typu.

prawna:

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

Nielegalny:

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

Najlepiej można zrobić, to gniazdo z wykorzystaniem oświadczenia.

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

najlepiej można zrobić, to:

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

Możesz używać tylko wielu obiektów w jednej instrukcji użycia, jeśli są tego samego typu. Nadal można zagnieżdżać za pomocą instrukcji bez nawiasów.

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

} 

Oto przykład stwardnienie obiektu, za pomocą tego samego typu oświadczenie:

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

} 
8

Ty mógł zrobić

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

ale to ledwie poprawa.