공부/C sharp
[CSharp] this.object.dispose() vs object =null
잠수함토끼
2018. 12. 26. 21:13
dispose() 함수와 null 사용 비교
다쓴 객체는 CG(Carbage Collector)에서 처리된다.
처리 시점은 불명확 하므로 원하는 시점에 삭제 할 수 있음
this.object.Dispose(); // Good
this.object = null; // soso
문제 상황
db, 파일 및 네트워크 같은 작업후 Unmanaged Resource를 해제 시
해결 방법
C#에서는 메모리 해제는 CG에서 진행하며 시점은 확정할 수 없다. 확정하고 싶다면 Dispose()를 활용하여야 한다.
this.object =new Creaeter();
this.object.Dispose() // 소멸자 Call됨
using을 사용하는 예
아래의 code는 같은 내용이다.
using을 사용하면 dispose()를 사용할 필요가 없다. Wrapping되어 호출해줌
Font font1 = new Font("Arral", 10.0f);
if(null!=font1)
((IDisposable)font1).Dispose();
using(Font font1 = new Font("Arral", 10.0f), Font font2 = new Font("Arral", 10.0f))
{
// 표현
}