기본 패턴
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으로 만든 객체를 스코프 밖에서 계속 쓰려고 하면 이미 정리된 자원을 건드리게 됩니다. 자원 수명과 변수 수명을 함께 봐야 합니다.