2011-01-03 6 views
5

블록은 종종 다음과 같이 기록됩니다사용중인 블록에서 새 개체에 대한 명시 적 참조를 설정해야합니까? "사용"

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

보다는 같이 :

새로운 푸 개체에 대한 명시 적 참조가 설정되지 않은 첫 번째 경우에,
using (var f = new Foo()) { ... } 

,이 블록이 끝나기 전에 물체가 처분 될 위험이 있습니까? 그렇지 않다면 왜 안 되겠습니까?

+0

? _______ –

+0

빠른 응답을 보내 주셔서 감사합니다! –

답변

3

아니요. 범위 블록을 사용하여 개체에 액세스해야하는 경우가 아니면 명시 적 참조를 설정할 필요가 없습니다. 참조되지 않은 변수가 범위를 벗어 났을 때만 삭제되므로 위험이 없습니다.

14

조기에 처리 할 위험은 없습니다.

첫 번째 예제는 여전히 생성 된 개체에 대한 명시 적 참조를 만듭니다. 그 참조는 이름이 없으므로 코드에서 사용할 수 없습니다.

블록은 블록의 끝까지 참조를 유지합니다 (이름은 없지만).

+0

편집 그냥 놓친 "" –

+0

@ 페 타르 - Doh! 편집 해 주셔서 감사합니다. –

관련 문제