C #에서 관리되지 않는 리소스를 정리하는 방법 [중복]
이 수업이 있습니다.
public class A
{
//Some logic code here
}
내 질문은 범위를 벗어난 후이 클래스를 기반으로 생성 된 객체를 어떻게 폐기하거나 파괴 할 수 있습니까?
예를 들면 :
A a = new A();
//some code here
애프터 //some code here
I는 싶어 a
파괴되거나 배치 해제 그의 할당 된 메모리 오브젝트.
답변
1 ispiro
문제가 무엇인지에 대한 질문에서 분명해 보이기 때문에 제목을 무시하고 문제의 본문에 집중하겠습니다.
짧은 대답 : 당신은 그렇지 않습니다. 이것은 필요하다고 판단 될 때 가비지 컬렉터가 자동으로 처리합니다. (가비지 수집기를 실행할 필요가 없습니다. 자동으로 수행됩니다.)
그런 다음 가비지 수집기는 a
예제 와 같이 범위를 벗어난 엔터티를 찾고 사용한 공간을 확보합니다. 그런 다음의 내부 a
도 분명히 범위를 벗어난 것을 확인하고 (코드의 다른 곳에서 참조되지 않는 한) 처리합니다.
그렇긴해도 구현 Dispose
하는 클래스의 변수를 사용할 때는 Dispose
명시 적으로 호출 하거나 using
블록을 사용 하여 수행 하는 것이 가장 좋습니다 . a
폐기 될 때 실행될 종료자를 구현할 수도 있습니다 . 그러나 그것은 당신이 요구 한 것이 아닌 것 같습니다.