[C#] using 지시문, using 문 이해하기 (using directive, using statement)

이번 시간에는 C#에서 using을 사용하는 방법에 대해 안내해 드리려고 합니다. using은 크게 다음과 같이 3가지 형태로 사용할 수 있답니다. 그럼 이제 하나씩 살펴보도록 하겠습니다.

  • C# using
  • using 지시문
  • static using 지시문
  • using 문

C# using

c#에서 using은 2가지 의미로 사용합니다. 하나는 using 지시문이라 표현하며, 네임스페이스의 별칭을 생성하는 역할을 합니다. 다른 하나는 using 문이라고 표현하며, dispose 될 객체의 범위를 설정하는 역할을 합니다.

using 지시문

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;

형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요.

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 지시문을 사용하는 경우는 다음과 같습니다.

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);
}

댓글