C#입출력과 예외

using과 IDisposable

파일, 스트림, 데이터베이스 연결처럼 정리가 필요한 자원을 안전하게 닫는 C# `using` 패턴을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

csharp
using var reader = new StreamReader(path);
string line = reader.ReadLine() ?? "";

설명

  • IDisposable은 사용이 끝난 자원을 명시적으로 정리할 수 있게 해 주는 계약입니다.
  • using 문이나 using var를 쓰면 스코프가 끝날 때 Dispose()가 자동으로 호출됩니다.
  • 파일 핸들, 네트워크 연결, 데이터베이스 연결 같은 자원은 GC만 믿지 말고 즉시 정리하는 편이 안전합니다.
  • using은 예외가 발생해도 정리 코드가 실행되도록 도와줍니다.

짧은 예제

csharp
using var writer = new StringWriter();

writer.WriteLine("hello");
writer.WriteLine("world");

Console.WriteLine(writer.ToString());

빠른 정리

항목설명
IDisposable정리 가능한 자원 계약
using (...) {}블록 종료 시 자동 정리
using var현재 스코프 끝에서 자동 정리
Dispose()자원 반환 메서드
예외 안전성실패해도 정리 코드를 보장하기 쉬움

주의할 점

using으로 만든 객체를 스코프 밖에서 계속 쓰려고 하면 이미 정리된 자원을 건드리게 됩니다. 자원 수명과 변수 수명을 함께 봐야 합니다.