네임스페이스 핵심 기능
C#에서 네임스페이스는 코드를 논리적으로 그룹화하는 수단으로, 다음과 같은 주요 목적을 가집니다:
1. 식별자 충돌 방지
서로 다른 컨텍스트에서 동일한 클래스명 사용 시 충돌을 해결합니다:
namespace ModuleAlpha
{
public class DataProcessor
{
public void ExecuteTask()
{
Console.WriteLine("Alpha 데이터 처리기");
}
}
}
namespace ModuleBeta
{
public class DataProcessor
{
public void ExecuteTask()
{
Console.WriteLine("Beta 데이터 처리기");
}
}
}
2. 코드 체계화
관련 기능 단위로 코드를 구성합니다:
namespace DatabaseLayer
{
public class CustomerDB
{
// 데이터베이스 연동 코드
}
}
namespace ServiceLayer
{
public class CustomerService
{
// 비즈니스 로직 구현
}
}
3. 접근 범위 제어
타입의 가시성을 명시적으로 관리합니다.
4. 참조 간소화
using 지시문으로 코드 가독성을 향상시킵니다:
using System;
using System.Collections.Generic;
namespace ClientApp
{
public class EntryPoint
{
public static void Main()
{
var idList = new List<int>();
Console.WriteLine("시스템 초기화 완료");
}
}
}
네임스페이스 구현 기법
기본 정의 방법
namespace NetworkUtilities
{
public class ConnectionManager
{
public void EstablishConnection()
{
Console.WriteLine("네트워크 연결 활성화");
}
}
}
호출 방식 비교
완전 한정명 사용:
public class Launcher
{
static void Run()
{
NetworkUtilities.ConnectionManager connector =
new NetworkUtilities.ConnectionManager();
connector.EstablishConnection();
}
}
using 지시문 적용:
using NetworkUtilities;
public class Launcher
{
static void Run()
{
ConnectionManager connector = new ConnectionManager();
connector.EstablishConnection();
}
}
계층적 네임스페이스
namespace PrimaryGroup
{
namespace SubGroup
{
public class Component
{
public void Activate()
{
Console.WriteLine("하위 컴포넌트 실행");
}
}
}
}
별칭 생성
using NetTools = NetworkUtilities;
public class App
{
static void Start()
{
NetTools.ConnectionManager manager =
new NetTools.ConnectionManager();
manager.EstablishConnection();
}
}
통합 구현 예시
// ConnectionModule.cs
namespace NetworkUtilities
{
public class ConnectionManager { ... }
}
// AppLauncher.cs
using NetworkUtilities;
public class AppLauncher
{
public static void Main()
{
new ConnectionManager().EstablishConnection();
}
}