다음 코드에서 기본 코드에 Foo 유형의 명명되지 않은 변수 인스턴스에 대한 하드 참조가 있거나 가비지 수집에 취약한 항목입니까?using 절의 암시 적 변수가 가비지 수집됩니까?
using(new Foo())
{
// Something done here.
}
수집 항목이 코드 블록에서 참조되고 있지 않도록 자원 일부 참조 카운팅을 수행 단지 세마포어 타입의 객체이다.
다음 코드에서 기본 코드에 Foo 유형의 명명되지 않은 변수 인스턴스에 대한 하드 참조가 있거나 가비지 수집에 취약한 항목입니까?using 절의 암시 적 변수가 가비지 수집됩니까?
using(new Foo())
{
// Something done here.
}
수집 항목이 코드 블록에서 참조되고 있지 않도록 자원 일부 참조 카운팅을 수행 단지 세마포어 타입의 객체이다.
using
절은 개체를 포함하는 숨겨진 로컬 범위 변수를 만듭니다.이 변수는 생성 된 finally
절에서 사용됩니다.
이 변수는 개체가 GC되지 않도록합니다.
see this variable in the spec 수 있습니다.
using(new Foo())
Foo
의 익명 인스턴스는 사용하여 블록 후 범위 밖으로 이동하고 쓰레기는 수집 될 수 있습니다.
'using' 블록은 블록의 끝에 개체를 배치합니다. Ergo, 처분 할 참고가 있어야합니다. – SLaks