잠토의 잠망경

[CSharp] this.object.dispose() vs object =null 본문

공부/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

Stackoverflow

문제 상황

db, 파일 및 네트워크 같은 작업후 Unmanaged Resource를 해제 시

해결 방법

C#에서는 메모리 해제는 CG에서 진행하며 시점은 확정할 수 없다. 확정하고 싶다면 Dispose()를 활용하여야 한다.

this.object =new Creaeter();

this.object.Dispose() // 소멸자 Call됨

참고Site

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))
{
    // 표현
}
Comments