Module 문

모듈의 이름을 선언하고 모듈이 구성하는 변수, 속성, 이벤트 및 프로시저의 정의를 소개합니다.

구문

[ <attributelist> ] [ accessmodifier ]  Module name
    [ statements ]
End Module

부분

attributelist
선택 사항. 특성 목록을 참조하세요.

accessmodifier
선택 사항. 다음 중 하나일 수 있습니다.

Access levels in Visual Basic을 참조하세요.

name
필수입니다. 이 모듈의 이름. Declared Element Names을 참조하세요.

statements
선택 사항. 이 모듈의 변수, 속성, 이벤트, 프로시저 및 중첩 형식을 정의하는 문입니다.

End Module
Module 정의를 종료합니다.

설명

Module 문은 네임스페이스 전체에서 사용할 수 있는 참조 형식을 정의합니다. 모듈(표준 모듈이라고도 함)은 클래스와 비슷하지만 몇 가지 중요한 차이점이 있습니다. 모든 모듈에는 정확히 하나의 인스턴스가 있으며 변수를 만들거나 할당할 필요가 없습니다. 모듈은 상속을 지원하거나 인터페이스를 구현하지 않습니다. 모듈은 클래스 또는 구조체라는 점에서 형식이 아니며, 프로그래밍 요소가 모듈의 데이터 형식을 갖도록 선언할 수 없습니다.

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

모듈의 수명은 프로그램과 동일합니다. 멤버도 모두 Shared이기 때문에 프로그램의 수명과 동일한 수명을 갖습니다.

모듈은 기본적으로 Friend 액세스로 설정됩니다. 액세스 한정자를 사용하여 액세스 수준을 조정할 수 있습니다. 자세한 내용은 Visual Basic 액세스 수준을 참조하세요.

모듈의 모든 멤버는 암시적으로 Shared입니다.

클래스 및 모듈

이러한 요소에는 많은 유사점이 있지만 몇 가지 중요한 차이점도 있습니다.

  • 용어 이전 버전의 Visual Basic은 클래스 모듈(.cls 파일) 및 표준 모듈(.bas 파일)의 두 가지 유형의 모듈을 인식합니다. 현재 버전에서는 이러한 클래스모듈을 각각 호출합니다.

  • 공유 멤버. 클래스의 멤버가 공유 멤버인지 인스턴스 멤버인지 여부를 제어할 수 있습니다.

  • 개체 방향. 클래스는 개체 지향이지만 모듈은 그렇지 않습니다. 따라서 클래스만 개체로 인스턴스화할 수 있습니다. 자세한 내용은 개체 및 클래스를 참조하세요.

규칙

  • 한정자. 모든 모듈 멤버는 암시적으로 공유됩니다. 멤버를 선언할 때는 Shared 키워드를 사용할 수 없으며 멤버의 공유 상태를 변경할 수 없습니다.

  • 상속. 모듈은 모든 모듈이 상속하는 Object 이외의 형식에서는 상속할 수 없습니다. 특히 한 모듈은 다른 모듈에서 상속할 수 없습니다.

    Object를 지정하는 경우에도 모듈 정의에서 Inherits 문을 사용할 수 없습니다.

  • 기본 속성. 모듈에서는 기본 속성을 정의할 수 없습니다. 자세한 내용은 기본을 참조하세요.

동작

  • 액세스 수준. 모듈 내에서 자체 액세스 수준으로 각 멤버를 선언할 수 있습니다. 모듈 멤버는 기본적으로 프라이빗 액세스로 설정되는 변수 및 상수를 제외하고 기본적으로 퍼블릭 액세스로 설정됩니다. 모듈에 멤버 중 하나보다 더 제한된 액세스 권한이 있는 경우 지정된 모듈 액세스 수준이 우선적으로 적용됩니다.

  • 범위. 모듈은 네임스페이스 전체의 범위에 있습니다.

    모든 모듈 멤버의 범위는 전체 모듈입니다. 모든 멤버는 형식 승격을 거치며, 이로 인해 해당 범위가 모듈을 포함하는 네임스페이스로 승격됩니다. 자세한 내용은 형식 승격을 참조하세요.

  • 한정. 프로젝트에 여러 모듈이 있을 수 있으며 두 개 이상의 모듈에서 이름이 같은 멤버를 선언할 수 있습니다. 그러나 해당 모듈 외부에서 참조가 온 경우 적절한 모듈 이름을 사용하여 해당 멤버에 대한 참조를 한정해야 합니다. 자세한 내용은 References to Declared Elements을 참조하세요.

예시

Public Module thisModule
    Sub Main()
        Dim userName As String = InputBox("What is your name?")
        MsgBox("User name is " & userName)
    End Sub
    ' Insert variable, property, procedure, and event declarations.
End Module

참고 항목