2011-01-03 6 views
5

„za pomocą” bloki są często napisane tak:Czy musisz ustawić jawne odwołanie do nowego obiektu w bloku przy użyciu?

using (new Foo()) { ... } 

zamiast tak:

using (var f = new Foo()) { ... } 

W pierwszym przypadku, gdzie nie ma bezpośredniego odniesienia do nowego obiektu Foo jest ustawiony, to tam jakiekolwiek niebezpieczeństwo, że przedmiot może zostać usunięty przed końcem bloku? Jeśli nie, dlaczego nie?

+0

Często? _______ –

+0

Dzięki za szybkie odpowiedzi! –

Odpowiedz

3

Nie trzeba ustawiać jawnego odniesienia, chyba że trzeba uzyskać dostęp do obiektu za pomocą bloku zakresu. Nie ma niebezpieczeństwa, że ​​zmienna bez odwołań zostanie usunięta wcześniej, ponieważ jest ona usuwana tylko wtedy, gdy wykracza poza zakres.

14

Nie ma niebezpieczeństwa, że ​​zostanie ona wcześniej usunięta.

Pierwszy przykład nadal tworzy bezpośrednie odniesienie do tworzonego obiektu. To odniesienie jest tylko nienazwane i nie może być użyte w twoim kodzie.

Blok będzie przechowywać referencję (aczkolwiek nienazwaną) do końca bloku.

+0

Edytowane tylko pominięte "jest" –

+0

@Petar - Doh! Dziękuję za edycję. –

Powiązane problemy