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 compreende.

Sintaxe

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

Partes

attributelist
Opcional. Consulte a Lista de Atributos.

accessmodifier
Opcional. Pode ser um dos seguintes:

Consulte os níveis de acesso no Visual Basic.

name
Obrigatório Nome deste módulo. Consulte nomes de elementos declarados.

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

End Module
Encerra a Module definição.

Observações

Uma Module instrução define um tipo de referência disponível em seu 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 ou 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 deve ser um arquivo de origem ou namespace e não pode ser uma classe, estrutura, módulo, interface, procedimento ou bloco. Não é possível aninhar um módulo em outro módulo ou em qualquer 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 seus membros são todos Shared, eles também têm tempos de vida iguais aos do programa.

Os módulos são padrão para acesso ao Friend . Você pode ajustar seus níveis de acesso com os modificadores de acesso. Para obter mais informações, consulte os níveis de acesso no Visual Basic.

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

Classes e módulos

Esses 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 do 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, consulte Objetos e Classes.

Regras

  • Modificadores. Todos os membros do módulo são implicitamente compartilhados. Você não pode usar a Shared palavra-chave 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 Objectdo 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, consulte Padrão.

Comportamento

  • Nível de acesso. Em um módulo, você pode declarar cada membro com seu próprio nível de acesso. Os membros do módulo são padrão para acesso público , exceto variáveis e constantes, que são padrão para acesso privado . Quando um módulo tem acesso mais restrito do que um de seus membros, 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 tipo, o que faz com que seu escopo seja promovido para o namespace que contém o módulo. Para obter mais informações, consulte 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ê deve 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, consulte 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

Consulte também