시소당
사용자 응용 프로그램에서 만들어지는 대부분의 개체는 가비지 컬렉터에 의해 메모리 관리가 되지만, 관리되지 않는 리소스가 존재한다.
# 관리되지 않는 리소스
1. 파일
2. 창(windows)
3. 네트워크 연결 또는 데이터베이서 연결
등의 운영체제 리소스를 래핑하는 개체
이러한 개체는 명확한 해제가 이루어져야 하므로 삭제 패턴을 구현해야한다.
--> IDisposable 객체를 상속받아 Dispose()를 구현
IDisposable 객체를 편리하게 사용하기위해 C#에서는 using문을 제공한다.
using 문 안에서 객체의 선언, 인스턴스화 해야한다.
이 스코프 내에서 예외가 발생하더라도 Dispose()를 호출하게 된다.
|
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
|
cs |
기존의 try~finally 문을 간소화 시켜준다.
try{
//생성
}
finally{
//해제
}