Share via


Declaração do módulo

Declara o nome de um módulo e introduz 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 Lista de Atributos.

accessmodifier
Opcional. Pode ser um dos seguintes:

Consulte 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 todo o 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 suportam herança ou interfaces de implementação. 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 de namespace. Isso significa que o contexto da declaração para 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 dentro de 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 a mesma vida útil do seu programa. Como seus membros são todos Shared, eles também têm vidas iguais às do programa.

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

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

Aulas e Módulos

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

  • Terminologia. 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 objetos. As classes são orientadas a objetos, mas os módulos não. Assim, apenas as 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 de Object, do qual todos os módulos herdam. Em particular, um módulo não pode herdar de outro.

    Não é possível usar a instrução Inherits em uma definição de módulo, mesmo para especificar Object.

  • Propriedade padrão. Não é possível definir nenhuma propriedade padrão em um módulo. Para obter mais informações, consulte Padrão.

Comportamento

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

  • Âmbito. Um módulo está no escopo em todo o seu 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 Tipo de promoção.

  • 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 tal 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