C#에서 using 키워드는 두 가지 의미로 사용 된다.
지시문으로써 using
다른 네임스페이스에 정의된 타입을 Import 하거나, 네임스페이스에 대한 별칭을 만들때 사용.
using System //코드 상단에 네임스페이스 정의
using Project = PC.MyCompany.Project; // 별칭
C# 6.0 부터 using static 문법이 추가 되었다. 스태틱 메소드를 클래스 이름을 명시하지 않고 호출하기 위해 사용 된다.
using static System.Console; // WriteLine("Hello World!")
...
WriteLine("Hello World!"); // Console이 생략 되었다
'using' statement
객체의 라이프 사이클을 제어하기 위해 사용된다. 코드 블록으로 표현 되며 해당 범위를 벗어나면 자동으로 Dispose 된다.
using System.IO;
...
FileStream fs1 = new FileStream("helloworld.txt", FileMode.CreateNew);
...
fs1.Dispose();
using (FileStream fs2 = new FileStream("helloworld.txt", FileMode.CreateNew))
{
...
} // fs2.Dispose()
하지만 사용하다 보니까 블록으로 표시해주는게 불편 했는지 C# 8.0 부터는 블록의 정의 없이 객체 앞에 using 키워드를 바로 붙여줄 수 있는 문법이 추가 되었다.
public void Foo()
{
using FileStream fs2 = new FileStream("helloworld.txt", FileMode.CreateNew);
...
} // fs3.Dispose()
마치며
어려운 내용은 아니고 그냥 C# 8.0 부터는 저런 내용이 추가 되었다 정도만 알고 사용할 수 있으면 된다.