다음을 통해 공유


네임스페이스(Visual C# Express)

업데이트: 2007년 11월

네임스페이스를 사용하여 C# 프로그램에 사용되는 다양한 형식을 구성할 수 있습니다. 이는 컴퓨터 파일 시스템의 폴더와 개념상 비슷합니다. 폴더와 마찬가지로 클래스는 네임스페이스를 통해 고유의 정규화된 이름을 가질 수 있습니다. C# 프로그램에는 하나 이상의 네임스페이스가 포함되며, 각 네임스페이스는 프로그래머가 정의하거나 이전에 작성된 클래스 라이브러리의 일부로 정의됩니다.

예를 들어, System 네임스페이스에는 콘솔 창에서의 읽기 및 쓰기를 위한 메서드가 들어 있는 Console 클래스가 포함되어 있습니다. System 네임스페이스에는 System.IOSystem.Collections 등의 다른 네임스페이스도 여러 개 포함되어 있습니다. .NET Framework에만도 80개 이상의 네임스페이스가 포함되어 있으며, 각 네임스페이스에는 수천 개까지의 클래스가 포함될 수 있습니다. 네임스페이스를 사용하면 이름이 비슷한 형식 및 메서드 간에 발생할 수 있는 혼동을 최소화할 수 있습니다.

네임스페이스 선언을 벗어나 클래스를 작성할 경우 컴파일러는 그 클래스에 대한 기본 네임스페이스를 제공합니다.

네임스페이스 사용 단순화

System 네임스페이스의 Console 클래스에 정의된 WriteLine 메서드를 사용하려면 다음과 같은 코드 줄을 사용합니다.

System.Console.WriteLine("Hello, World!");

Console에 포함된 모든 메서드 앞에 항상 System을 붙이기가 번거로우므로 다음과 같이 C# 소스 파일의 시작 부분에 using 지시문을 삽입하면 네임스페이스의 여러 메서드를 보다 쉽게 사용할 수 있습니다.

using System;

using System;을 포함하면 System 네임스페이스를 사용한다고 가정하고 이후에는 다음과 같이 코드를 작성할 수 있습니다.

Console.WriteLine("Hello, World!");

네임스페이스 직접 만들기

일반적으로 대규모 프로그램 작업에서 네임스페이스를 사용합니다. 네임스페이스를 직접 만들어 사용하면 이름이 비슷한 메서드 및 형식을 어느 정도 제어할 수 있습니다. 예를 들어, 디스크에서 통계 데이터와 이미지 파일을 모두 로드하는 응용 프로그램을 작성한다고 가정합니다. 이 경우 Images와 StatisticalData라는 두 개의 네이스페이스를 새로 만들 수 있습니다. 두 개의 개별 네임스페이스를 사용하므로 각 네임스페이스에 같은 이름의 클래스가 있더라도 각 네임스페이스에 정의된 모든 메서드 이름은 고유하게 됩니다. 즉, 두 네임스페이스 모두에 FileHandling이라는 클래스가 포함될 수 있고, 또 이 두 클래스 모두에 Load라는 메서드가 포함될 수 있습니다. StatisticalData.FileHandling 또는 Images.FileHandling 중 하나를 참조하여 원하는 클래스를 지정할 수 있습니다.

Visual C# Express 프로젝트에서 각 네임스페이스마다 별도의 폴더를 만드는 것이 좋습니다.

예제

다음 예제에서는 FileHandling이라는 클래스를 각각 포함하는 두 개의 네임스페이스를 정의합니다. 네임스페이스를 지정하면 두 네임스페이스에 포함된 클래스와 메서드를 빠르게 구별할 수 있습니다.

namespace StatisticalData
{
    class FileHandling
    {
        public void Load() {}  // code to load statistical data
    }
}

namespace Images 
{
    class FileHandling
    {
        public void Load() {}  // code to load an image file
    }
}

class Program
{
    static void Main()
    {
        StatisticalData.FileHandling data = new StatisticalData.FileHandling();
        data.Load();

        Images.FileHandling image = new Images.FileHandling();
        image.Load();
    }
}

참고 항목

개념

C# 언어 입문

클래스(Visual C# Express)

참조

네임스페이스(C# 프로그래밍 가이드)