Module (Instrucción)

Declara el nombre de un módulo e introduce la definición de las variables, propiedades, eventos y procedimientos que el módulo incluye.

Sintaxis

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

Partes

attributelist
Opcional. Consulte Lista de atributos.

accessmodifier
Opcional. Puede ser uno de los siguientes:

Vea Access levels in Visual Basic.

name
Necesario. Nombre de este módulo. Vea Declared Element Names.

statements
Opcional. Instrucciones que definen las variables, propiedades, eventos, procedimientos y tipos anidados de este módulo.

End Module
Termina la definición de Module.

Comentarios

Una instrucción Module define un tipo de referencia disponible en todo su espacio de nombres. Un módulo (que a veces también se denomina módulo estándar) es similar a una clase, pero con algunas diferencias importantes. Cada módulo tiene exactamente una instancia y no es necesario crearla ni asignarla a una variable. Los módulos no admiten la herencia ni implementan interfaces. Tenga en cuenta que un módulo no es un tipo, en el sentido de como lo son una clase o una estructura (no se puede declarar un elemento de programación que tenga el tipo de datos de un espacio de nombres).

Module solo se puede utilizar en un nivel de espacio de nombres. Esto significa que el contexto de la declaración de un módulo debe ser un archivo de origen o un espacio de nombres y no puede ser una clase, estructura, módulo, interfaz, procedimiento o bloque. No se puede anidar un módulo dentro de otro módulo ni dentro de ningún tipo. Para más información, vea Declaration Contexts and Default Access Levels (Contextos de declaración y niveles de acceso predeterminados).

Un módulo tiene la misma duración que el programa. Dado que sus miembros son todos Shared, también tienen duraciones iguales a la del programa.

De manera predeterminada, el acceso a los módulos es de tipo Friend. Los niveles de acceso se pueden ajustar con los modificadores de acceso. Para obtener más información, consulte Niveles de acceso en Visual Basic.

Todos los miembros de un módulo son implícitamente Shared.

Clases y módulos

Estos elementos tienen muchas similitudes, pero también hay algunas diferencias importantes.

  • Terminología. Las versiones anteriores de Visual Basic reconocen dos tipos de módulos: módulos de clase (archivos .cls) y módulos estándar (archivos .bas). La versión actual llama a estas clases y módulos, respectivamente.

  • Miembros compartidos. Puede controlar si un miembro de una clase es un miembro compartido o de instancia.

  • Orientación a objetos. Las clases están orientadas a objetos, pero los módulos no. Por consiguiente, solo se pueden crear instancias de las clases como objetos. Para más información, consulte Objetos y clases.

Reglas

  • Modificadores. Todos los miembros del módulo son implícitamente Compartidos. No se puede usar la palabra clave Shared al declarar un miembro y no se puede modificar el estado compartido de ningún miembro.

  • Herencia. Un módulo no se puede heredar de ningún tipo distinto de Object, del que se heredan todos los módulos. En particular, un módulo no puede heredar de otro.

    La instrucción Inherits no se puede utilizar en una definición de módulo, ni siquiera para especificar Object.

  • Propiedad Default. En un módulo no se pueden definir propiedades predeterminadas. Para más información, consulte Default.

Comportamiento

  • Nivel de acceso. En un módulo, cada miembro se puede declarar con su propio nivel de acceso. Los miembros del módulo tienen como valor predeterminado el acceso público, excepto variables y constantes, que tienen como valor predeterminado el acceso privado. Cuando un módulo tiene un acceso más restringido que cualquiera de sus miembros, el nivel de acceso del módulo especificado tiene prioridad.

  • Ámbito. Un módulo está en ámbito en su espacio de nombres.

    El ámbito de todos los miembros del módulo es todo el módulo. Observe que todos los miembros se someten a la promoción de tipos, lo que hace que su ámbito se promueva al espacio de nombres que contiene el módulo. Para más información, consulte Promoción de tipos.

  • Calificación. Un proyecto puede tener varios módulos y se pueden declarar miembros con el mismo nombre en dos o más módulos. Sin embargo, debe calificar cualquier referencia a dicho miembro con el nombre de módulo adecuado si la referencia proviene de fuera del módulo. Para más información, consulta References to Declared Elements.

Ejemplo

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

Consulte también