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형식에서 상속할 수 없습니다. 특히 한 모듈은 다른 모듈에서 상속할 수 없습니다.

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

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

동작

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

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

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

  • 자격. 프로젝트에 여러 모듈을 사용할 수 있으며 두 개 이상의 모듈에서 이름이 같은 멤버를 선언할 수 있습니다. 그러나 해당 모듈 외부에서 참조가 있는 경우 해당 모듈 이름을 사용하여 해당 멤버에 대한 모든 참조를 한정해야 합니다. 자세한 내용은 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

참고 항목