Namespace 문

네임스페이스의 이름을 선언하고 선언 뒤에 있는 소스 코드가 해당 네임스페이스 내에서 컴파일되도록 합니다.

Syntax

Namespace [Global.] { name | name.name }
    [ componenttypes ]
End Namespace

부분

전역 선택 사항입니다. 프로젝트의 루트 네임스페이스에서 네임스페이스를 정의할 수 있습니다. Visual Basic의 네임스페이스를 참조하세요.

name 필수입니다. 네임스페이스를 식별하는 고유한 이름입니다. 유효한 Visual Basic 식별자여야 합니다. 자세한 내용은 선언된 요소 이름을 참조하세요.

componenttypes 선택 사항입니다. 네임스페이스를 구성하는 요소입니다. 여기에는 열거형, 구조체, 인터페이스, 클래스, 모듈, 대리자 및 기타 네임스페이스가 포함되지만 이에 국한되지 않습니다.

End Namespace 블록을 종료합니다 Namespace .

설명

네임스페이스는 조직 시스템으로 사용됩니다. 다른 프로그램 및 애플리케이션에 노출되는 프로그래밍 요소를 분류하고 표시하는 방법을 제공합니다. 네임스페이스는 클래스 또는 구조체라는 점에서 형식 이 아니며 네임스페이스의 데이터 형식을 갖도록 프로그래밍 요소를 선언할 수 없습니다.

문 다음에 Namespace 선언된 모든 프로그래밍 요소는 해당 네임스페이스에 속합니다. Visual Basic은 문 또는 다른 Namespace 문이 발생할 때까지 요소를 마지막으로 선언된 네임스페이스로 End Namespace 계속 컴파일합니다.

네임스페이스가 프로젝트 외부에서도 이미 정의된 경우 프로그래밍 요소를 추가할 수 있습니다. 이렇게 하려면 문을 사용하여 Namespace Visual Basic에 요소를 해당 네임스페이스로 컴파일하도록 지시합니다.

파일 또는 네임스페이 Namespace 스 수준에서만 문을 사용할 수 있습니다. 즉, 네임스페이스의 선언 컨텍스트 는 원본 파일 또는 다른 네임스페이스여야 하며 클래스, 구조체, 모듈, 인터페이스 또는 프로시저가 될 수 없습니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하세요.

다른 네임스페이스 내에서 한 네임스페이스를 선언할 수 있습니다. 선언할 수 있는 중첩 수준에 대한 엄격한 제한은 없지만 다른 코드가 가장 안쪽 네임스페이스에 선언된 요소에 액세스할 때는 중첩 계층의 모든 네임스페이스 이름이 포함된 정규화 문자열을 사용해야 합니다.

액세스 수준

네임스페이스는 액세스 수준이 있는 Public 것처럼 처리됩니다. 네임스페이스는 동일한 프로젝트의 코드, 프로젝트를 참조하는 다른 프로젝트 및 프로젝트에서 빌드된 어셈블리에서 액세스할 수 있습니다.

네임스페이스 수준에서 선언된 프로그래밍 요소는 네임스페이스에서 의미하지만 다른 요소 내에는 없는 것을 의미하며, 가 있거나 PublicFriend 액세스할 수 있습니다. 지정되지 않은 경우 이러한 요소의 액세스 수준은 기본적으로 를 사용합니다 Friend . 네임스페이스 수준에서 선언할 수 있는 요소에는 클래스, 구조체, 모듈, 인터페이스, 열거형 및 대리자가 포함됩니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하세요.

루트 네임스페이스

프로젝트의 모든 네임스페이스 이름은 루트 네임스페이스를 기반으로 합니다. Visual Studio는 프로젝트 이름을 프로젝트의 모든 코드에 대한 기본 루트 네임스페이스로 할당합니다. 예를 들어 프로젝트 이름이 Payroll이면 해당 프로그래밍 요소는 해당 네임스페이스 Payroll에 속합니다. 를 선언 Namespace funding하는 경우 해당 네임스페이스의 전체 이름은 입니다 Payroll.funding.

제네릭 목록 클래스 예제와 같이 문에서 Namespace 기존 네임스페이스를 지정하려는 경우 루트 네임스페이스를 null 값으로 설정할 수 있습니다. 이렇게 하려면 프로젝트 메뉴에서 프로젝트 속성을 클릭한 다음, 상자가 비어 있도록 루트 네임스페이스 항목을 선택 취소합니다. 제네릭 목록 클래스 예제에서 이 작업을 수행하지 않은 경우 Visual Basic 컴파일러는 의 전체 이름을 Payroll.System.Collections.Generic사용하여 프로젝트 Payroll내에서 새 네임스페이스로 사용합니다System.Collections.Generic.

또는 키워드(keyword) 사용하여 Global 프로젝트 외부에서 정의된 네임스페이스의 요소를 참조할 수 있습니다. 이렇게 하면 프로젝트 이름을 루트 네임스페이스로 유지할 수 있습니다. 이렇게 하면 프로그래밍 요소를 기존 네임스페이스와 함께 의도치 않게 병합할 가능성이 줄어듭니다. 자세한 내용은 Visual Basic의 네임스페이스에서 "정규화된 이름의 전역 키워드" 섹션을 참조하세요.

Global 키워드(keyword) 네임스페이스 문에서도 사용할 수 있습니다. 이렇게 하면 프로젝트의 루트 네임스페이스에서 네임스페이스를 정의할 수 있습니다. 자세한 내용은 Visual Basic의 네임스페이스에서 "네임스페이스 문의 전역 키워드" 섹션을 참조하세요.

문제 해결. 루트 네임스페이스는 네임스페이스 이름의 예기치 않은 연결로 이어질 수 있습니다. 프로젝트 외부에서 정의된 네임스페이스를 참조하는 경우 Visual Basic 컴파일러는 이를 루트 네임스페이스에서 중첩된 네임스페이스로 해석할 수 있습니다. 이러한 경우 컴파일러는 외부 네임스페이스에 이미 정의된 형식을 인식하지 못합니다. 이를 방지하려면 "루트 네임스페이스"에 설명된 대로 루트 네임스페이스를 null 값으로 설정하거나 키워드(keyword) 사용하여 Global 외부 네임스페이스의 요소에 액세스합니다.

특성 및 한정자

네임스페이스에 특성을 적용할 수 없습니다. 특성은 어셈블리의 메타데이터에 정보를 제공합니다. 네임스페이스 같은 원본 분류자는 의미가 없습니다.

네임스페이스에는 액세스 또는 프로시저 한정자 또는 다른 한정자를 적용할 수 없습니다. 형식이 아니므로 이러한 한정자는 의미가 없습니다.

예 1

다음 예제에서는 두 개의 네임스페이스를 선언합니다. 하나는 다른 네임스페이스에 중첩되어 있습니다.

Namespace n1
    Namespace n2
        Class a
            ' Insert class definition.
        End Class
    End Namespace
End Namespace

예제 2

다음 예제에서는 한 줄에 여러 개의 중첩된 네임스페이스를 선언하며 이전 예제와 동일합니다.

Namespace n1.n2
    Class a
        ' Insert class definition.
    End Class
End Namespace

예제 3

다음 예제에서는 이전 예제에 정의된 클래스에 액세스합니다.

Dim instance As New n1.n2.a

예제 4

다음 예제에서는 새 제네릭 목록 클래스의 기본 구조를 정의하고 네임스페이스에 System.Collections.Generic 추가합니다.

Namespace System.Collections.Generic
    Class specialSortedList(Of T)
        Inherits List(Of T)
        ' Insert code to define the special generic list class.
    End Class
End Namespace

추가 정보