Module 문

업데이트: 2007년 11월

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

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

구성 요소

  • attributelist
    선택적 요소입니다. 특성 목록을 참조하십시오.

  • accessmodifier
    선택적 요소이며 다음 중 하나일 수 있습니다.

    Visual Basic의 액세스 수준을 참조하십시오.

  • name
    필수적 요소이며 이 모듈의 이름입니다. 선언 요소 이름을 참조하십시오.

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

  • End Module
    Module 정의를 끝냅니다.

설명

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

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

모듈은 사용자의 프로그램과 수명이 동일합니다. 모듈의 멤버는 모두 Shared이므로 이들 또한 해당 프로그램과 수명이 동일합니다.

모듈은 기본적으로 Friend(Visual Basic) 액세스입니다. 액세스 한정자를 사용하여 액세스 수준을 조정할 수 있습니다. 자세한 내용은 Visual Basic의 액세스 수준을 참조하십시오.

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

클래스와 모듈

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

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

  • 공유 멤버. 사용자는 클래스 멤버를 공유 멤버 또는 인스턴스 멤버로 제어할 수 있습니다.

  • 개체 지향. 클래스는 개체 지향적이지만 모듈은 그렇지 않습니다. 따라서 클래스만 개체로 인스턴스화될 수 있습니다. 자세한 내용은 클래스와 모듈 비교를 참조하십시오.

규칙

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

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

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

  • 기본 속성. 모듈에서 기본 속성을 정의할 수 없습니다.

동작

  • 액세스 수준. 모듈 내에서는 각 멤버만의 액세스 수준으로 각 멤버를 선언할 수 있습니다. 모듈 멤버는 변수 및 상수를 제외하고 기본적으로 Public(Visual Basic) 액세스이며 변수 및 상수는 기본적으로 Private(Visual Basic) 액세스입니다. 모듈에 모듈 멤버의 액세스보다 더 제한된 액세스가 있는 경우 지정된 모듈 액세스 수준이 사용됩니다.

  • 범위. 모듈은 해당 네임스페이스의 범위 내에 있습니다.

    모든 모듈 멤버의 범위는 전체 모듈입니다. 모든 멤버는 형식 승격을 거치게 됩니다. 그러면 멤버의 범위가 모듈을 포함하는 네임스페이스로 확장됩니다. 자세한 내용은 형식 승격을 참조하십시오.

  • 한정. 한 프로젝트에 여러 모듈을 사용할 수 있으며 둘 이상의 모듈에서 같은 이름으로 멤버를 선언할 수 있습니다. 그러나 참조가 해당 모듈 외부의 것인 경우 적절한 모듈 이름으로 이러한 멤버에 대한 모든 참조를 한정해야 합니다. 자세한 내용은 여러 변수의 이름이 같은 경우의 참조 확인을 참조하십시오.

예제

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

참고 항목

개념

형식 승격

참조

Class 문(Visual Basic)

Namespace 문

Structure 문

Interface 문(Visual Basic)

Property 문