📘프로그래밍/C#

[C#] 12 네임스페이스

bohemdev1 2024. 11. 2. 13:12

정의

 

내부 식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역

 

 

 

의의

 

네임스페이스를 통해 코드를 논리 그룹으로 구분이 가능합니다. 또한, 프로그램을 구성하는 코드에 여러 라이브러리가 포함된 경우에 발생할 수 있는 이름 충돌을 방지할 수 있습니다.

 

 

 

기능

 

다음은 네임스페이스의 기본 선언 형식입니다.

namespace NamespaceName
{
    class ClassName
    {
    public:
    	void Func1() {}
    }
    // void Func2() {}
}

 

네임스페이스에 선언된 클래스 및 해당 클래스 멤버는 외부에 선언된 것과 같은 이름을 가질 수 있습니다. 네임스페이스에 직접 포함될 수 있는 멤버는 클래스 뿐입니다. 필드나 메서드 같은 멤버는 클래스 내부에 선언된 채 소속되는 방식으로 네임스페이스에 간접 포함합니다.

 

 

다음은 외부에서 네임스페이스의 멤버에 접근하는 형식입니다.

NamespaceName.ClassName obj;
obj.Func1();

 

 

using 선언을 통해 외부에 선언된 네임스페이스의 식별자를 생략할 수 있습니다. 단, 중복된 이름을 갖는 클래스가 존재하면 식별자를 통해 어떤 클래스에 접근하는지 명시해야 합니다.

using NamespaceName;
ClassName obj;
obj.Func1();

 

 

 

사용 예시

 

 

Monster.cs

namespace Resources
{
    public class Monster
    {
        public string m_Name;     
        public int m_Attack;      
        public void PrintInfo() { Debug.Log($"이름({m_Name}) : 공격력({m_Attack})"); }
    }
}

 

Main.cs

public class Monster
{
    public string m_Name;
    public float m_Star;
    public void PrintInfo() { Debug.Log($"이름({m_Name}) : 성급({m_Star})"); }
}

namespace Resources
{
    public class Item
    {
        public string m_Name;
        public int m_Price;
        public void PrintInfo() { Debug.Log($"이름({m_Name}) : 가격({m_Price})"); }
    }
}

// 예) 몬스터 및 아이템 정보 저장 및 출력
public class Main
{
    void Start()
    {
        // 내부 클래스 접근
        Monster A = new Monster();
        A.m_Name = "바람 드래곤";
        A.m_Star = 3;
        A.PrintInfo();

        // 네임스페이스 접근 - 식별자
        MyTeam.Monster B = new MyTeam.Monster();
        B.m_Name = "얼음 고블린";
        B.m_Attack = 20;
        B.PrintInfo();

        // 네임스페이스 접근 - 식별자 생략
        Item C = new Item();
        C.m_Name = "화염의 검";
        C.m_Price = 1500;
        C.PrintInfo();
    }
}

/*
이름(바람 드래곤) : 성급(3)
이름(얼음 고블린) : 공격력(20)
이름(화염의 검) : 가격(1500)
*/

 

 

 


 

 

네임스페이스 (C++)

자세한 정보: 네임스페이스(C++)

learn.microsoft.com

 

'📘프로그래밍 > C#' 카테고리의 다른 글

[C#] 13 List  (3) 2024.11.16
[C#] 11 정적 멤버  (1) 2024.11.02
[C#] 10 REF / OUT  (1) 2024.11.01
[C#] 09 생성자 / 소멸자  (2) 2024.10.31
[C#] 08 클래스  (1) 2024.10.30