UDP통신을 구현 예제를 하다 Using문을 사용하게 되었다. 무엇인지 모르고 사용했었는데, 다시 금 정리해보고자 한다.
상단에 using을 사용하여 import 외부 dll파일을 사용 할 수 있다. 일반적으로 프로그램 맨 위쪽에 using ~~을 추가하는 부분이다.
using문을 사용하여 Disposable 객체의 Dispose()를 자동으로 호출해서 메모리 관리를 편하게 할 수 있다. (Dispose() 메서드는 객체가 사용중인 메모리와 리소스를 해제하는 메소드이다.)
using (var form = new Form1())
{
form.ShowDialog();
}
위와 같은 방법으로 사용할 수 있는데, using 블록이 끝날 때, 혹은 블록이 끝나기 전에 예외가 발생했으나 예외를 처리하지 않았을 때 using 키워드로 생성된 객체(위 코드에서는 Form1 form)의 Dispose()메서드를 호출하여 메모리를 해제해준다.
즉 위코드는 내부적으로 아래 코드로 변한되며, 완전히 같은 동작을 한다.
var form = new Form1();
try
{
form.ShowDialog();
}
finally
{
form.Dispose();
}
using 문은 개체의 사용이 끝남과 동시에 Dispose() 메서드를 호출해주는 구문이기 때문에 IDisposable 인터페이스를 구현하는 클래스의 개체에 대해서만 사용이 가능하다.
StreamReader와 StreamWriter로 파일을 읽고 쓴 후에는 반드시 Close() 메서드를 호출해서 스트림을 닫아주는 것이 좋은데, using 구문을 통해 사용하게 되면 Dispose() 메서드를 자동으로 호출해주므로 Close()를 깜빡하고 호출하지 않는 실수, 일일히 호출해야 하는 번거로움을 줄일 수 있다.