네임스페이스

less than 1 minute read

네임스페이스

namespace

이름이 중복되어 정의되는 것을 구분하기 위해서 만들어졌다. 일반적으로는 수 많은 클래스를 분류하는 방법으로 사용된다.

다른 사람들이 만든 클래스를 이것저것 사용하다보면 클래스, 변수, 메서드 등 이름이 중복되어 사용되는 경우가 생기는데

컴파일러는 이런 상황에서 적절한 의미를 선택해서 해석할 수 없기 때문에 이름 충돌(naming conflict) 오류가 발생한다.


네임스페이스는 이런 문제를 해결하기 위해 개발자가 문맥에 해당하는 정보를 컴파일러에게 주는 역할을 한다.

namespace Bakcoding
{
  class Study{}
}

namespace Blog
{
  class Study{}
}

네임스페이스로 구분된 블록 내에서는 동일한 이름 공간이 적용되며 네임스페이스 외부에서 사용하는 경우 네임스페이스도 명시하여야한다.

static void Main(string[] args)
{
  Bakcoding.Study study = new Bakcoding.Study();
}

using

하지만 이렇게 매번 네임스페이스까지 작성하는것은 번거럽기 때문에 using 이라는 예약어를 통해서 생략이 가능하다.

using Bakcoding;

static void Main(string[] args)
{
  Study study = new Study();
}


이걸 통해서 지금까지 c# 코드를 작성할 때 기본적으로 작성했던 using System의 의미를 알 수 있다.

System이라는 네임스페이스를 사용한다고 명시함으로 생략하여 여러 메서드를 사용할 수 있었다.

//using System

namespace Bakcoding
{
  class Program
  {
    static void Main(string[] args)
    {
      System.Console.WriteLine("Hello World");
    }
  }
}