Module (Instrucción)Module Statement

Declara el nombre de un módulo e introduce la definición de las variables, propiedades, eventos y procedimientos que incluye el módulo.Declares the name of a module and introduces the definition of the variables, properties, events, and procedures that the module comprises.

SintaxisSyntax

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

ElementosParts

attributelist
Opcional.Optional. Consulte lista de los atributos.See Attribute List.

accessmodifier
Opcional.Optional. Puede ser uno de los siguientes:Can be one of the following:

Vea Access levels in Visual Basic.See Access levels in Visual Basic.

name
Obligatorio.Required. Nombre de este módulo.Name of this module. Vea Declared Element Names.See Declared Element Names.

statements
Opcional.Optional. Instrucciones que definen las variables, propiedades, eventos, procedimientos y los tipos anidados de este módulo.Statements which define the variables, properties, events, procedures, and nested types of this module.

End Module
Termina la definición de Module.Terminates the Module definition.

ComentariosRemarks

Un Module instrucción define un tipo de referencia disponible a lo largo de su espacio de nombres.A Module statement defines a reference type available throughout its namespace. Un módulo (a veces denominado un módulo estándar) es similar a una clase, pero con algunas diferencias importantes.A module (sometimes called a standard module)is similar to a class but with some important distinctions. Cada módulo tiene exactamente una instancia y no necesita ser creado ni asignado a una variable.Every module has exactly one instance and does not need to be created or assigned to a variable. Los módulos no admiten la herencia ni implementan interfaces.Modules do not support inheritance or implement interfaces. Tenga en cuenta que un módulo no es un tipo en el sentido de que es una clase o estructura, no se puede declarar un elemento de programación para que el tipo de datos de un módulo.Notice that a module is not a type in the sense that a class or structure is — you cannot declare a programming element to have the data type of a module.

Puede usar Module sólo en el nivel de espacio de nombres.You can use Module only at namespace level. Esto significa que el contexto de declaración para un módulo debe ser un archivo de código fuente o espacio de nombres y no puede ser la clase, estructura, módulo, interfaz, procedimiento o bloque.This means the declaration context for a module must be a source file or namespace, and cannot be a class, structure, module, interface, procedure, or block. No se puede anidar un módulo dentro de otro módulo, o dentro de cualquier tipo.You cannot nest a module within another module, or within any type. Para obtener más información, vea Declaration Contexts and Default Access Levels (Contextos de declaración y niveles de acceso predeterminados).For more information, see Declaration Contexts and Default Access Levels.

Un módulo tiene la misma duración que el programa.A module has the same lifetime as your program. Dado que sus miembros son todos Shared, también tienen duraciones iguales que el del programa.Because its members are all Shared, they also have lifetimes equal to that of the program.

De forma predeterminada los módulos Friend acceso.Modules default to Friend access. Los niveles de acceso se pueden ajustar con los modificadores de acceso.You can adjust their access levels with the access modifiers. Para obtener más información, consulte tener acceso a los niveles en Visual Basic.For more information, see Access levels in Visual Basic.

Todos los miembros de un módulo son implícitamente Shared.All members of a module are implicitly Shared.

Las clases y módulosClasses and Modules

Estos elementos tienen muchas similitudes, pero hay diferencias importantes.These elements have many similarities, but there are some important differences as well.

  • Terminología.Terminology. 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).Previous versions of Visual Basic recognize two types of modules: class modules (.cls files) and standard modules (.bas files). La versión actual llama a estos clases y módulos, respectivamente.The current version calls these classes and modules, respectively.

  • Miembros compartidos.Shared Members. Puede controlar si un miembro de una clase es un compartido o un miembro de instancia.You can control whether a member of a class is a shared or instance member.

  • Orientación a objetos.Object Orientation. Clases están orientada a objetos, pero no son de módulos.Classes are object-oriented, but modules are not. Por lo que se pueden crear instancias únicas clases como objetos.So only classes can be instantiated as objects. Para obtener más información, consulte objetos y clases.For more information, see Objects and Classes.

ReglasRules

  • Modificadores.Modifiers. Todos los miembros de módulo son implícitamente Shared.All module members are implicitly Shared. No puede usar el Shared palabra clave al declarar un miembro y no puede modificar el estado de cualquier miembro compartido.You cannot use the Shared keyword when declaring a member, and you cannot alter the shared status of any member.

  • Herencia.Inheritance. Un módulo no puede heredar de ningún tipo distinto Object, todos los módulos heredan.A module cannot inherit from any type other than Object, from which all modules inherit. En concreto, un módulo no puede heredar de otra.In particular, one module cannot inherit from another.

    No puede usar el Inherits Statement en una definición de módulo, ni siquiera para especificar Object.You cannot use the Inherits Statement in a module definition, even to specify Object.

  • Propiedad predeterminada.Default Property. No se puede definir cualquier propiedad predeterminada en un módulo.You cannot define any default properties in a module. Para obtener más información, consulte predeterminado.For more information, see Default.

ComportamientoBehavior

  • Nivel de acceso.Access Level. Dentro de un módulo, puede declarar a cada miembro con su propio nivel de acceso.Within a module, you can declare each member with its own access level. De forma predeterminada los miembros del módulo pública acceder, excepto las variables y constantes, que de forma predeterminada privada acceso.Module members default to Public access, except variables and constants, which default to Private access. Cuando un módulo con más acceso restringido que uno de sus miembros, el nivel de acceso del módulo especificado tiene prioridad.When a module has more restricted access than one of its members, the specified module access level takes precedence.

  • Ámbito.Scope. Es un módulo en el ámbito de su espacio de nombres.A module is in scope throughout its namespace.

    El ámbito de todos los miembros del módulo es el módulo completo.The scope of every module member is the entire module. Tenga en cuenta que todos los miembros se someten a promoción, lo que hace que su ámbito se promueva al nivel de espacio de nombres que contiene el módulo.Notice that all members undergo type promotion, which causes their scope to be promoted to the namespace containing the module. Para obtener más información, consulte promoción de tipos.For more information, see Type Promotion.

  • Calificación.Qualification. Puede tener varios módulos en un proyecto y puede declarar a miembros con el mismo nombre en dos o más módulos.You can have multiple modules in a project, and you can declare members with the same name in two or more modules. Sin embargo, debe calificar cualquier referencia a este miembro con el nombre de módulo correspondiente si la referencia es de fuera de ese módulo.However, you must qualify any reference to such a member with the appropriate module name if the reference is from outside that module. Para obtener más información, consulta References to Declared Elements.For more information, see References to Declared Elements.

EjemploExample

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

Vea tambiénSee also