2011-01-03 6 views
5

„mit“ Blöcke werden häufig wie folgt geschrieben:Müssen Sie einen expliziten Verweis auf ein neues Objekt in einem using-Block setzen?

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

anstatt wie folgt aus:

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

Im ersten Fall, in dem kein expliziter Verweis auf das neue Objekt Foo gesetzt ist, ist es Gefahr, dass das Objekt vor dem Ende des Blocks entsorgt werden könnte? Wenn nicht, warum nicht?

+0

Oft? _______ –

+0

Danke für die schnellen Antworten! –

Antwort

3

Nein, Sie müssen keinen expliziten Verweis festlegen, es sei denn, Sie müssen auf das Objekt mit dem Bereichsblock zugreifen. Es besteht keine Gefahr, dass die nicht referenzierte Variable frühzeitig entsorgt wird, weil sie nur entsorgt wird, wenn sie außer Reichweite gerät.

14

Es besteht keine Gefahr, dass es früher entsorgt wird.

Das erste Beispiel erstellt immer noch einen expliziten Verweis auf das Objekt, das erstellt wird. Diese Referenz ist nur ungenannt und kann nicht in Ihrem Code verwendet werden.

Der Block using enthält den Verweis (wenn auch unbenannt) bis zum Ende des Blocks.

+0

Editiert nur ein verpasst "ist" –

+0

@Petar - Doh! Danke für die Bearbeitung. –

Verwandte Themen