Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 중첩된 네임스페이스(Nested Namespace)란? 개념과 사용 예제 완벽 정리

C#에서 네임스페이스 안에 또 다른 네임스페이스를 선언하는 것을 중첩된 네임스페이스(Nested Namespace)라고 합니다. 이는 주로 코드를 논리적으로 구조화하고, 관련된 클래스들을 계층적으로 관리하기 위해 사용됩니다.

중첩된 네임스페이스의 기본 구조

먼저 외부(Outer) 네임스페이스는 다음과 같이 선언합니다.

namespace outer {}

그리고 그 내부에 내부(Inner) 네임스페이스를 선언할 수 있습니다.

namespace inner {
    public class innerClass {
        public void display() {
            Console.WriteLine("Inner Namespace");
        }
    }
}

내부 네임스페이스의 클래스 메서드를 호출하려면 해당 클래스의 객체를 생성한 후, 아래 예제처럼 메서드를 호출하면 됩니다.

중첩된 네임스페이스 전체 예제 코드

using System;

namespace outer {
    class Program {
        static void Main(string[] args) {
            innerClass cls = new innerClass();
            Console.WriteLine("Welcome!");
            Program.display();
            cls.display();
            Console.ReadLine();
        }

        public static void display() {
            Console.WriteLine("Outer Namespace");
        }
    }

    namespace inner {
        public class innerClass {
            public void display() {
                Console.WriteLine("Inner Namespace");
            }
        }
    }
}

실행 결과

Welcome!
Outer Namespace
Inner Namespace

코드 설명

  • outer 네임스페이스 안에 inner 네임스페이스가 중첩되어 있습니다.
  • Program.display()는 외부 네임스페이스의 정적(static) 메서드를 호출하여 "Outer Namespace"를 출력합니다.
  • cls.display()는 내부 네임스페이스의 innerClass 객체를 통해 "Inner Namespace"를 출력합니다.

C# 최신 버전의 간결한 문법

C# 10부터는 파일 범위 네임스페이스(File-scoped namespace)와 함께 점(.) 표기법으로도 중첩된 네임스페이스를 선언할 수 있습니다.

namespace outer.inner {
    public class innerClass {
        public void display() {
            Console.WriteLine("Inner Namespace");
        }
    }
}

이 방식은 코드 들여쓰기를 줄여 가독성을 높일 수 있어 실무에서 자주 활용됩니다.

정리

중첩된 네임스페이스는 대규모 프로젝트에서 코드의 충돌을 방지하고, 관련 기능별로 체계적인 구조를 만들 때 유용합니다. 외부와 내부 네임스페이스의 역할을 명확히 구분하여 사용하면 유지보수성이 크게 향상됩니다.