using

using (C# 참조)

C#에서 using이라는 키워드는 겉으로는 똑같아 보여도 실제로 하는 일이 완전히 다른 두 가지 용도로 쓰여요. 처음 마주하면 헷갈리기 쉬운데, 하나씩 나눠서 보면 금방 정리된답니다. 두 가지를 먼저 크게 짚어볼게요.

출처: using (C# reference)

본문

첫 번째는 using 문(statement) 이에요. 객체를 정리해야 하는 범위를 정해두고, 그 범위가 끝나는 지점에서 객체가 자동으로 삭제(dispose) 되도록 만들어주는 역할을 하죠. 정리해야 할 리소스를 다루는 코드를 이 블록 안에 넣어두면, 블록을 빠져나가는 순간 정리가 보장돼요.

string filePath = "example.txt";
string textToWrite = "Hello, this is a test message!";

// Use the using statement to ensure the StreamWriter is properly disposed of
using (StreamWriter writer = new StreamWriter(filePath))
{
    writer.WriteLine(textToWrite);
}

여기서는 StreamWriter가 파일을 열고 쓰는 동안만 필요하니까, 그 범위를 using 블록으로 감싼 모습이에요. 블록이 끝나면 writer가 알아서 정리되어 리소스 누수가 나지 않는 거죠.

두 번째는 using 지시문(directive) 이에요. 네임스페이스에 별칭을 만들거나, 다른 네임스페이스에 정의된 타입을 가져와서 짧게 쓸 수 있게 해줘요. 코드 맨 위에 주로 적어두고요.

using System;
using System.IO;

이렇게 해두면 System.IO 안의 타입을 전체 경로 없이 바로 쓸 수 있게 되어 코드가 훨씬 간결해져요.

핵심만 정리하면 이래요. 리소스 정리를 보장하고 싶을 땐 using 문을, 네임스페이스나 타입을 가져오고 싶을 땐 using 지시문을 쓰면 됩니다. 하는 일이 다르니 용도에 맞게 골라 쓰면 돼요.

더 알아보기