이번 시간에는 C#에서 using을 사용하는 방법에 대해 안내해 드리려고 합니다. using은 크게 다음과 같이 3가지 형태로 사용할 수 있답니다. 그럼 이제 하나씩 살펴보도록 하겠습니다.
- C# using
- using 지시문
- static using 지시문
- using 문
C# using
c#에서 using은 2가지 의미로 사용합니다. 하나는 using 지시문이라 표현하며, 네임스페이스의 별칭을 생성하는 역할을 합니다. 다른 하나는 using 문이라고 표현하며, dispose 될 객체의 범위를 설정하는 역할을 합니다.
using 지시문
using 지시문(directive)은 앞에서 언급한 바와 같이 네임스페이스의 별칭을 설정합니다. 닷넷프레임워크를 대상으로 하는 애플리케이션을 처음 생성하는 경우에도 메인 메서드에서 다음과 같은 using 지시문을 확인할 수 있습니다.
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Data;
- using System.Linq;
- using System.Threading.Tasks;
- using System.Windows;
DataTable클래스(메모리 내 데이터에 대한 하나의 테이블)는 System.Data 네임스페이스에 속합니다. using 지시문을 통해 시스템의 데이터 네임스페이스에 대한 별칭을 생성하여 해당 변수를 바로 선언할 수 있도록 합니다.
만약 using 지시문을 사용하지 않는다면 다음과 같이 변수를 선언해야 합니다.
System.Data.DataTable dataTable = new System.Data.DataTable();
using 지시문을 사용하는 경우는 다음과 같습니다.
using System.Data;
DataTable dataTable = new DataTable();
static using 지시문
using 지시문은 정적으로 선언할 수도 있습니다. 다음은 System의 Math 네임스페이스에 있는 Max 메서드입니다. 보통 static 메서드를 다음과 같이 실행할 수 있으나, 해당 클래스에서 매우 사용도가 높은 네임스페이스의 경우에는 static을 using 지시문으로 설정을 고려해 볼 수 있습니다.
일반적인 using 지시문
using System;
int i = Math.Max(0, 1);
static using 지시문을 사용하는 경우는 다음과 같습니다.
사용도가 높을 때 설정할 수 있습니다. 다만, 해당 클래스 내의 메서드와 혼돈이 있을 수 있으므로 사용상 주의가 필요합니다. 대신 이름을 단순화 할 수 있는 장점을 제공합니다. Math.Max => Max
using System;
using System.Windows;
using static System.Math;
namespace BeomSang
{
public partial class App : Application
{
int i = Max(0, 1);
//이름을 단순화 할 수 있습니다.
int j = Math.Max(0, 1);
}
}
using 문
using 문(statement)은 소멸 대상이 되는 객체에 대해 설정합니다. 다음과 같은 스트링리더가 있다고 할 때 using 문을 dispose를 생략할 수 있습니다.
StringReader stringReader = new StringReader("beomsang");
try
{
string s = string.Empty;
do
{
s = stringReader.ReadLine();
} while (s != null);
}
finally
{
stringReader.Dispose();
}
try ~ finally 구문을 using 문으로 설정하는 예제입니다.
using (StringReader stringReader = new StringReader("beomsang"))
{
string s = string.Empty;
do
{
s = stringReader.ReadLine();
} while (s != null);
}