Instrução 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 [Global.] { name | name.name }
    [ componenttypes ]
End Namespace

Partes

  • Global
    Opcional. Permite que você definir um espaço para nome do namespace raiz do seu projeto. Consulte Namespaces no Visual Basic.

  • 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 elemento declarados (Visual Basic).

  • componenttypes
    Opcional. Elementos que compõem o namespace. Esses incluem, mas não estão limitados a, enumerações, estruturas, interfaces, classes, módulos, delegados e outros espaços para nome.

  • 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 espaço para nome não é um tipo de no sentido de que é uma classe ou estrutura — você não pode declarar um elemento de programação para que o tipo de dados de um namespace.

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

Se um namespace já estiver definido, até mesmo fora seu projeto, você pode adicionar elementos de programação a ele. Para fazer isso, você usa um Namespace a instrução para direcionar o Visual Basic para compilar elementos em desse 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 Contextos de declaração e níveis de acesso padrão (Visual Basic).

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.

Nível de Acesso

Espaços para nome são tratados como se tivessem um Public nível de acesso. 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.

Elementos de programação declarados no nível do espaço para nome, que significa que em um namespace, mas não dentro de qualquer outro elemento, podem ter Public ou Friend acesso. 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 Contextos de declaração e níveis de acesso padrão (Visual Basic).

Namespace raiz

Todos os espaços de nomes em seu projeto baseiam-se 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. Para obter mais informações, consulte a seção "Global palavra-chave em nomes totalmente qualificados" Namespaces no Visual Basic.

O Global palavra-chave também pode ser usado em uma declaração de Namespace. Isso permite que você defina um espaço para nome do namespace raiz do seu projeto. Para obter mais informações, consulte a seção "Global palavra-chave no Namespace declarações" Namespaces no Visual Basic.

Solução de problemas. 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 o namespace raiz para um valor nulo como descrito em "Namespace raiz" ou usar o Global palavra-chave para acessar os elementos de espaços para nome externos.

Atributos e modificadores

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.

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.

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

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

Consulte também

Referência

Instrução Imports (tipo e namespace .NET)

Conceitos

Nomes de elemento declarados (Visual Basic)

Namespaces no Visual Basic