Partilhar via


Declaração de namespace

Declara o nome de um namespace e faz com que o código-fonte que segue a declaração seja compilado dentro desse namespace.

Namespace { name | name.name }
    [ componenttypes ]
End Namespace

Partes

  • name
    Obrigatório.Um nome exclusivo que identifica o namespace.Deve ser um identificador válido Visual Basic.Para obter mais informações, consulte Nomes de Elementos Declarados.

  • componenttypes
    Opcional.Elementos que compõem o namespace.Esses incluem (mas não estão limitados a) enumerações, estruturas, interfaces, classes, módulos, representantes e namespaces.

  • End Namespace
    Finaliza um bloco Namespace.

Comentários

Namespaces são usados como um sistema organizacional.Eles fornecem uma maneira de classificar e apresentar os elementos de programação que são expostos a outros programas e aplicativos.Observe que um namespace 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 namespace.

Você pode usar uma instrução Namespace somente no nível do arquivo ou namespace.Isso significa que o contexto da declaração para um namespace deve ser um arquivo fonte ou namespace, e não pode ser uma classe, estrutura, módulo, procedimento, interface ou procedimento.Para obter mais informações, consulte Declaração de contextos e níveis de acesso padrão.

Namespaces são tratados como se tivessem um nível de acesso Public.Um namespace pode ser acessado a partir de código em qualquer lugar no mesmo projeto, de outros projetos que referenciem o projeto e de qualquer conjunto criado a partir do projeto.

Regras

  • Atributos. Não é possível aplicar atributos a um namespace.Um atributo contribui com informações para metadados do assembly, que não é significativo para fontes classificadores como namespaces.

  • Modificadores Não é possível aplicar qualquer acesso ou modificadores de procedimento ou qualquer outros modificadores, a um namespace.Como não é um tipo, esses modificadores são não significativos.

  • Aninhamento. Você pode declarar um namespace dentro de outro.Há um limite estrito aos níveis de aninhamento você pode declarar, mas lembre-se que quando outro código acessa os elementos declarados no namespace mais interno, ele deve usar uma sequência de qualificação que contenha todos os nomes de namespaces na hierarquia de aninhamento.

Comportamento

  • Nível de Acesso Elementos de programação declarados no nível de namespace, que significa que em um namespace mas não dentro de qualquer outro elemento, pode ter acesso Public ou Friend.Se não for especificado, o nível de acesso que tal elemento usa é Friend por padrão.Você pode declarar no namespace para nome elementos incluem classes, estruturas, módulos, interfaces, enumerações e representantes.Para obter mais informações, consulte Declaração de contextos e níveis de acesso padrão.

  • Compilação. Todos os elementos de programação declarados após uma instrução Namespace pertencem a esse namespace.Visual Basic continua a compilar elementos no último namespace declarado até encontrar uma instrução End Namespace ou outra instrução Namespace.

  • Adicionando a um Namespace. Se um namespace já estiver definido, até mesmo fora seu projeto, você pode adicionar elementos de programação a ele.Para fazer isso, use uma instrução Namespace para direcionar o Visual Basic para compilar os seguintes elementos para esse namespace.

    O exemplo a seguir define o esqueleto de uma nova classe genérica lista e o adiciona ao namespace System.Collections.Generic.

    Namespace System.Collections.Generic
        Class specialSortedList(Of T)
            Inherits List(Of T)
            ' Insert code to define the special generic list class.
        End Class
    End Namespace
    
  • Namespace de Raiz. Todos os nomes de namespace em seu projeto são baseados em um namespace raiz.Visual Studio atribui o nome do projeto como o namespace raiz padrão de todo o código no seu projeto.Por exemplo, se seu projeto for chamado Payroll,seus elementos de programação pertencem ao namespace Payroll.Se você declarar Namespace funding, o nome completo desse namespace será Payroll.funding.

    Se você desejar especificar um namespace existente em uma instrução Namespace, como no exemplo de classe de lista genérica, você pode definir o namespace raiz como um valor nulo.Para fazer isso, clique em Propriedades do Projeto do menu Project , em seguida, desmarque a entrada Namespace raiz para que a caixa fique vazia.Se você não fizer isso no exemplo de classe de lista genérica, o compilador Visual Basic tomaria System.Collections.Generic como um novo namespace no projeto Payroll, com o nome completo de Payroll.System.Collections.Generic.

    Como alternativa, você pode usar a palavra-chave Global para se referir a elementos de namespaces definidos fora do projeto.Isso permite que você mantenha o nome do projeto como o namespace raiz.Isso reduz a chance de que, inadvertidamente, você mescle os elementos de programação com os dos namespaces existentes.

Solução de problemas

  • Tipos Indefinidos. O namespace raiz pode levar à concatenações inesperadas de nomes de namespace..Se você fizer referência a namespaces definidos fora do projeto, o compilador Visual Basic poderá construí-los como namespaes aninhados no namespace raiz.Em tais casos, o compilador não reconhece quaisquer tipos que tiverem sido já definidos em namespaces externos.Para evitar isso, defina seu namespace raiz com um valor nulo, conforme descrito em " Namespace Raiz ", ou use a palavra-chave Global para acessar elementos de namespaces externos.

Exemplo

O exemplo a seguir declara dois namespaces, um aninhado no outro.

Namespace n1
    Namespace n2
        Class a
            ' Insert class definition.
        End Class
    End Namespace
End Namespace

O exemplo a seguir declara vários namespaces aninhados em uma única linha, e ela é equivalente ao exemplo anterior.

Namespace n1.n2
    Class a
        ' Insert class definition.
    End Class
End Namespace

O exemplo a seguir acessa a classe definida nos exemplos anteriores.

Dim instance As New n1.n2.a

Consulte também

Conceitos

Nomes de Elementos Declarados

Namespaces in Visual Basic

Referência

Declaração Imports (Tipo e Namespace .NET)

Global