C#에서의 using 키워드

개발 2007/02/28 01:41
.NET 프레임워크 2.0 부터 도입된 Dispose()를 자동적으로 호출하게 하는 새로운 구조인 using. 오늘 소스 코드를 살펴보다가 도저히 이해가 되질 않아서 책을 찾아봤더니 네임스페이스 선언에만 사용하는 줄 알았던 using을 이렇게도 쓴다고 한다.

using (Graphics g = this.CreateGraphics())
{
    g.DrawLine(Pens.Black, new Point(0,0), new Point(3,5));
}

using 블럭이 끝나면 해당 개체에 대해 Dispose()가 자동으로 호출됨. using 블럭이 끝남과 동시에 Graphics 객체에 대한 Dispose()가 호출되는 구조.

위 코드는 using을 사용하지 않은 아래 코드와 같은 의미.
Graphics g = this.this.CreateGraphics();
try {
    g.DrawLine(Pens.Black, new Point(0,0), new Point(3,5));
}
finally {
    if (g != null)
        ((IDisposable)g).Dispose();
}

여기에서 사용된 using 키워드는 네임스페이스에 대한 using 지시자와 혼동해서는 안됨. using 키워드를 사용함으로써 코드를 좀 더 간결하게 유지할 수 있음. 결국 개발자의 취향이긴 하지만.

자바하다가 C# 하려니 너무 많이 막히고 있다. orz...

출처 : Beginning C#

태그 : ,
엮인글 1 : 댓글 6
  1. BlogIcon 기선 2007/02/28 08:41 수정/삭제 댓글

    점점 만능이 되가고 계시군요. 부럽습니다. :)

    • BlogIcon decoder 2007/02/28 10:35 수정/삭제

      별 말씀을요~! 윈도 애플리케이션을 만들려고 하니 어쩔 수가 없습니다. :)

      ... 그나저나 전 언제쯤 기선님만큼 할 수 있을런지요... ;;

  2. BlogIcon bruce 2008/07/09 20:52 수정/삭제 댓글

    좋은글 링크 퍼갑니다.^^

  3. BlogIcon dykim 2008/07/17 16:42 수정/삭제 댓글

    좋은 글 잘 읽었습니다.
    그냥 지나가려다 제 시행착오를 말하면 도움이 될 까 하고, 글을 남깁니다.
    저도 한때는 Using구문이 "자원을 적시에 해제해서 효율적일것이다"라고 생각하고 많이많이 사용했으나,
    시행착오를 겪게 되더군요,
    그의미를 더 살펴보면 Connection, Graphic류의 객체를 사용할 때 아니면 쓰나마나 한 것이라는거죠,
    더 정확히 말하자면 IDispose패턴을 구현해서 "특별하게 자원을 해제할 일" 이 있는 객체들을 저렇게 쓰는거랍니다.

    • BlogIcon decoder 2008/07/17 20:09 수정/삭제

      그렇군요.. 유용한 정보 알려주셔서 감사합니다. ^^
      자원에 관련된 코드는 조심성 있게 다뤄야 하는데, 말씀하신 내용 명심하겠습니다. :)

댓글 쓰기