일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- GitHub
- Splunk
- index
- Lotto
- GT-S80
- mean
- 알고리즘
- SciPy
- CNN
- dataframe
- E-P1
- pycharm
- LSTM
- Series
- pandas
- 삼성소프트웨어멤버십
- synology
- imread
- ipad
- Button
- install
- SPL
- DFS
- javascript
- mariadb
- Python
- RNN
- Numpy
- keras
- pip
Archives
- Today
- Total
잠토의 잠망경
[CSharp] this.object.dispose() vs object =null 본문
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))
{
// 표현
}
Comments