Compartilhar via


Instrução Module

Declara o nome de um módulo e apresenta a definição das variáveis, propriedades, eventos e procedimentos que o módulo abrange.

Sintaxe

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

Partes

attributelist
Opcional. Veja Lista de atributo.

accessmodifier
Opcional. Um dos seguintes pode ser feito:

Confira Níveis de acesso no Visual Basic.

name
Obrigatórios. Nome desse módulo. Confira Nomes de elementos declarados.

statements
Opcional. Instruções que definem as variáveis, as propriedades, os eventos, os procedimentos e os tipos aninhados deste módulo.

End Module
Termina a definição Module.

Comentários

Uma instrução Module define um tipo de referência disponível em todo o namespace. Um módulo (às vezes chamado de módulo padrão) é semelhante a uma classe, mas com algumas distinções importantes. Cada módulo tem exatamente uma instância e não precisa ser criado nem atribuído a uma variável. Os módulos não dão suporte à herança nem implementam interfaces. Observe que um módulo não é um tipo no sentido de que uma classe ou estrutura é – você não pode declarar um elemento de programação para ter o tipo de dados de um módulo.

Você só pode usar Module no nível do namespace. Isso significa que o contexto de declaração de um módulo precisa ser um arquivo de origem ou namespace, e não pode ser uma classe, uma estrutura, um módulo, uma interface, um procedimento nem um bloco. Você não pode aninhar um módulo em outro módulo nem dentro de algum tipo. Para obter mais informações, consulte Contextos de declaração e níveis de acesso padrão.

Um módulo tem o mesmo tempo de vida que o programa. Como os membros são todos Shared, eles também têm tempo de vida igual ao do programa.

Os módulos assumem o padrão de acesso Amigo. Você pode ajustar os níveis de acesso com os modificadores de acesso. Para obter mais informações, confira Níveis de acesso no Visual Basic.

Todos os membros de um módulo são implicitamente Shared.

Classes e módulos

Estes elementos têm muitas semelhanças, mas também há algumas diferenças importantes.

  • Terminologia. As versões anteriores do Visual Basic reconhecem dois tipos de módulos: módulos de classe (arquivos .cls) e módulos padrão (arquivos .bas). A versão atual chama essas classes e módulos, respectivamente.

  • Membros compartilhados. Você pode controlar se um membro de uma classe é um membro compartilhado ou de instância.

  • Orientação a objeto. As classes são orientadas a objetos, mas os módulos não são. Portanto, somente classes podem ser instanciadas como objetos. Para obter mais informações, confira Objetos e classes.

Regras

  • Modificadores. Todos os membros do módulo são implicitamente Compartilhados. Você não pode usar a palavra-chave Shared ao declarar um membro e não pode alterar o status compartilhado de nenhum membro.

  • Herança. Um módulo não pode herdar de nenhum tipo diferente de Object, do qual todos os módulos herdam. Em particular, um módulo não pode herdar de outro.

    Você não pode usar a Instrução Inherits em uma definição de módulo, mesmo para especificar Object.

  • Propriedade padrão. Você não pode definir nenhuma propriedade padrão em um módulo. Para obter mais informações, confira Padrão.

Comportamento

  • Nível de acesso. Em um módulo, você pode declarar cada membro com o próprio nível de acesso. Os membros do módulo assumem o padrão de acesso Público, exceto variáveis e constantes, que assumem o padrão de acesso Privado. Quando um módulo tem acesso mais restrito do que um dos membros dele, o nível de acesso do módulo especificado tem precedência.

  • Escopo. Um módulo está no escopo em todo o namespace.

    O escopo de cada membro do módulo é o módulo inteiro. Observe que todos os membros passam por promoção de tipos, fazendo com que o escopo seja promovido para o namespace que contém o módulo. Para obter mais informações, confira Promoção de tipos.

  • Qualificação. Você pode ter vários módulos em um projeto e pode declarar membros com o mesmo nome em dois ou mais módulos. No entanto, você precisará qualificar qualquer referência a esse membro com o nome do módulo apropriado se a referência for de fora desse módulo. Para obter mais informações, confira Referências a elementos declarados.

Exemplo

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

Confira também