산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 네임스페이스 이해하기: 이름 충돌 방지와 코드 조직화

네임스페이스(Namespace)는 한 집합의 이름을 다른 집합과 분리하여 관리하는 방법을 제공합니다. 한 네임스페이스에 선언된 클래스 이름이 다른 네임스페이스의 같은 클래스 이름과 충돌하지 않습니다.

네임스페이스 정의

namespace 네임스페이스_이름
{
    // 코드 선언
}

네임스페이스에 속한 함수나 변수를 호출하려면 네임스페이스 이름을 접두사로 붙입니다.

네임스페이스_이름.항목_이름;

네임스페이스 사용 예제

using System;

namespace FirstSpace
{
    class NamespaceClass
    {
        public void Func() { Console.WriteLine("Inside FirstSpace"); }
    }
}

namespace SecondSpace
{
    class NamespaceClass  // 같은 클래스 이름, 다른 네임스페이스
    {
        public void Func() { Console.WriteLine("Inside SecondSpace"); }
    }
}

class TestClass
{
    static void Main(string[] args)
    {
        FirstSpace.NamespaceClass fc = new FirstSpace.NamespaceClass();
        SecondSpace.NamespaceClass sc = new SecondSpace.NamespaceClass();
        
        fc.Func();  // Inside FirstSpace
        sc.Func();  // Inside SecondSpace
        Console.ReadKey();
    }
}

using 키워드

using 키워드는 프로그램이 지정된 네임스페이스의 이름을 사용함을 알립니다. 예를 들어 System 네임스페이스의 Console 클래스를 쓸 때:

Console.WriteLine("Hello there");  // using System; 덕분

완전 한정 이름을 써도 됩니다.

System.Console.WriteLine("Hello there");

using 지시문으로 네임스페이스 생략

using System;
using FirstSpace;
using SecondSpace;

namespace FirstSpace
{
    class Abc { public void Func() { Console.WriteLine("Inside FirstSpace"); } }
}

namespace SecondSpace
{
    class Efg { public void Func() { Console.WriteLine("Inside SecondSpace"); } }
}

class TestClass
{
    static void Main(string[] args)
    {
        Abc fc = new Abc();      // FirstSpace.Abc
        Efg sc = new Efg();      // SecondSpace.Efg
        fc.Func();
        sc.Func();
        Console.ReadKey();
    }
}

중첩 네임스페이스 (Nested Namespaces)

네임스페이스 안에 다른 네임스페이스를 정의할 수 있습니다.

namespace Namespace1
{
    // 코드 선언
    namespace Namespace2
    {
        // 코드 선언
    }
}

점(.) 연산자로 중첩 네임스페이스 멤버에 접근합니다.

중첩 네임스페이스 예제

using System;
using FirstSpace;
using FirstSpace.SecondSpace;

namespace FirstSpace
{
    class Abc { public void Func() { Console.WriteLine("Inside FirstSpace"); } }
    
    namespace SecondSpace
    {
        class Efg { public void Func() { Console.WriteLine("Inside SecondSpace"); } }
    }
}

class TestClass
{
    static void Main(string[] args)
    {
        Abc fc = new Abc();
        Efg sc = new Efg();
        fc.Func();  // Inside FirstSpace
        sc.Func();  // Inside SecondSpace
        Console.ReadKey();
    }
}

네임스페이스 별칭 (Namespace Alias)

긴 네임스페이스 이름이나 충돌하는 이름을 짧게 별칭으로 쓸 수 있습니다.

using ProjectA = MyCompany.Projects.ProjectA;
using ProjectB = MyCompany.Projects.ProjectB;

// 사용
ProjectA.ClassName objA = new ProjectA.ClassName();
ProjectB.ClassName objB = new ProjectB.ClassName();

전역 네임스페이스 (Global Namespace)

global:: 접두사로 전역 네임스페이스를 명시적으로 참조합니다.

global::System.Console.WriteLine("전역 System 네임스페이스");

모범 사례

핵심: 네임스페이스는 물리적 파일 구조가 아닌 논리적 코드 조직화 도구입니다. 이름 충돌 방지와 코드 탐색성 향상이 주 목적입니다.

C 언어

  1. C# Hello World – 첫 C# 애플리케이션 만들기
  2. C# 키워드와 식별자 이해: 규칙, 목록, 모범 사례
  3. C# 변수와 기본 데이터 타입 완벽 가이드
  4. C# 연산자 – C# 연산자 종합 가이드
  5. C# 비트 연산자와 시프트 연산자 완전 정복: 종합 가이드
  6. C# 기초: 입출력(Essential Input/Output) 완벽 가이드
  7. C# 식, 문, 블록: 개념과 실전 예제로 완벽 이해
  8. C# 주석 마스터하기: 종류, 모범 사례, XML 문서화
  9. C# switch 문 마스터하기: 문법, 예제, 모범 사례
  10. C# 삼항 연산자: 조건부 표현식을 간결하게 작성하는 법