네임스페이스(Visual C# Express)
업데이트: 2007년 11월
네임스페이스를 사용하여 C# 프로그램에 사용되는 다양한 형식을 구성할 수 있습니다. 이는 컴퓨터 파일 시스템의 폴더와 개념상 비슷합니다. 폴더와 마찬가지로 클래스는 네임스페이스를 통해 고유의 정규화된 이름을 가질 수 있습니다. C# 프로그램에는 하나 이상의 네임스페이스가 포함되며, 각 네임스페이스는 프로그래머가 정의하거나 이전에 작성된 클래스 라이브러리의 일부로 정의됩니다.
예를 들어, System 네임스페이스에는 콘솔 창에서의 읽기 및 쓰기를 위한 메서드가 들어 있는 Console 클래스가 포함되어 있습니다. System 네임스페이스에는 System.IO 및 System.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();
}
}