C# 네임스페이스 마스터하기: 구성, 범위, 모범 사례
C# 네임스페이스 완벽 가이드: 구성, 범위, 모범 사례
네임스페이스가 C# 코드를 어떻게 깔끔하게 유지하고, 이름 충돌을 방지하며, 확장 가능한 프로젝트 구조를 가능하게 하는지 배워보세요.
네임스페이스는 C# 코드 구성의 근간입니다. 관련된 클래스, 인터페이스, 구조체, 대리자를 그룹화하는 폴더 역할을 하여, 대규모 코드베이스를 관리하기 쉽게 만들고 네이밍 충돌을 줄여줍니다.
네임스페이스의 일반적인 멤버:
- 중첩 네임스페이스
- 클래스
- 인터페이스
- 구조체
- 대리자
네임스페이스는 선택 사항이지만, 명확성과 유지보수성을 위해 사용하는 것이 모범 사례입니다.
파일이 전부 한 폴더에 흩어져 있는 바탕화면을 상상해 보세요—찾기가 혼란스럽겠죠. 네임스페이스는 디렉터리 구조를 코드에 반영하여 관련 타입을 논리적으로 묶어줍니다.
또한 네이밍 충돌을 해결합니다: Logger라는 같은 이름의 클래스가 서로 다른 네임스페이스에 있으면 충돌 없이 공존할 수 있습니다.
네임스페이스 정의하기
namespace 키워드로 선언합니다:
namespace MyNamespace {
// 네임스페이스 내용
}
예제:
namespace MyNamespace {
class MyClass {
public void MyMethod() {
System.Console.WriteLine("Creating my namespace");
}
}
}
이 코드는 MyNamespace를 정의하고, 그 안에 MyClass를 두며, 메서드는 메시지를 출력합니다.
네임스페이스 멤버 접근하기
도트 연산자로 멤버를 참조합니다:
NamespaceName.MemberName
인스턴스 생성 예:
MyNamespace.MyClass myClass = new MyNamespace.MyClass();
다음 프로그램에서 MyProgram 네임스페이스가 MyNamespace의 클래스를 호출합니다:
using System;
namespace MyNamespace {
public class SampleClass {
public static void MyMethod() {
Console.WriteLine("Creating my namespace");
}
}
}
namespace MyProgram {
public class MyClass {
public static void Main() {
MyNamespace.SampleClass.MyMethod();
}
}
}
실행 결과:
Creating my namespace
using 키워드 활용
매번 정규화된 이름을 쓰지 않으려면 파일 상단에 네임스페이스를 임포트하세요:
using System;
이후 다음과 같이 간단히 쓸 수 있습니다:
Console.WriteLine("Hello World!");
대신 System.Console.WriteLine을 쓰지 않아도 됩니다.
중첩 네임스페이스
네임스페이스 안에 또 다른 네임스페이스를 두어 계층 구조를 만들 수 있습니다:
namespace MyNamespace {
namespace Nested {
// 내용
}
}
중첩 멤버 접근은 도트 연산자로:
MyNamespace.Nested.ClassName
예제:
using System;
namespace MyNamespace {
namespace Nested {
public class SampleClass {
public static void MyMethod() {
Console.WriteLine("Nested Namespace Example");
}
}
}
}
namespace MyProgram {
public class MyClass {
public static void Main() {
MyNamespace.Nested.SampleClass.MyMethod();
}
}
}
출력:
Nested Namespace Example
중첩 네임스페이스는 대규모 솔루션을 논리적 섹션으로 구조화하여, 코드에서 파일 시스템 레이아웃을 반영하게 해줍니다.