Compartilhar via


Namespaces no Visual Basic

Namespaces organizam objetos definidos em um assembly. Assemblies podem conter vários namespaces, por sua vez pode conter outros namespaces. Namespaces evitar ambigüidade e simplificar as referências ao usar grandes grupos de objetos, como bibliotecas de classe .

Por exemplo, o .NET Framework define o ListBox classe a System.Windows.Forms namespace. O fragmento de código a seguir mostra como declarar uma variável usando o nome totalmente qualificado para esta classe:

Dim LBox As System.Windows.Forms.ListBox

Evitando conflitos de Nome

.NET Frameworknamespaces resolver um problema que às vezes chamado de a poluição denamespace, no qual o desenvolvedor de umabiblioteca de classeé dificultado pelo uso de nomes semelhantes em outra biblioteca. Esses conflitos com os componentes existentes são chamados de os conflitos de nome.

Por exemplo, se você criar a uma nova classe chamada ListBox, você pode usá-lo dentro de seu projeto sem qualificação. No entanto, se você quiser usar o .NET Framework ListBoxaclasse no mesmo projeto, você deve usar uma referência totalmente qualificada para fazer a referência exclusivo. Se a referência não é exclusiva, Visual Basic produz um erro informando que o nome é ambíguo. O exemplo de código a seguir demonstra como declarar esses objetos:

' Define a new object based on your ListBox class.
Dim LBC As New ListBox
' Define a new Windows.Forms ListBox control.
Dim MyLB As New System.Windows.Forms.ListBox

A ilustração a seguir mostra duas hierarquias de namespace , ambos contendo um objeto chamado ListBox.

Hierarquia de namespace

Por padrão, cada executável arquivo que você criar com Visual Basic contém um namespace com o mesmo nome de seu projeto. Por exemplo, se você definir um objeto dentro de um projeto chamado ListBoxProject, o arquivo executável ListBoxProject.exe contém um namespace chamado ListBoxProject.

Vários assemblies podem usar o mesmo namespace. Visual Basicos trata como um único conjunto de nomes. Por exemplo, você pode definir classes para um namespace chamado SomeNameSpace em um assembly chamado Assemb1e definir as classes adicionais para o mesmo namespace de um assembly chamado Assemb2.

Nomes totalmente qualificados

Nomes totalmente qualificados são referências de objeto são prefixadas com o nome do namespace no qual o objeto é definido. Você pode usar objetos definidos em outros projetos, se você criar uma referência à classe (escolhendo Adicionar referência da projeto menu) e, em seguida, usar o nome totalmente qualificado para o objeto no seu código. O fragmento de código a seguir mostra como usar o nome totalmente qualificado para um objeto de outro projetodo namespace:

Dim LBC As New ListBoxProject.Form1.ListBox

Nomes totalmente qualificados impedem a nomeação entra em conflito porque eles possibilitam o compilador determinar qual objeto está sendo usado. No entanto, os próprios nomes podem obter longo e complicado. Para contornar esse problema, você pode usar o Importsdedemonstrativo para definir um alias— um nome abreviado, você pode usar no lugar de um nome totalmente qualificado. Por exemplo, o exemplo de código a seguir cria aliases para os dois nomes totalmente qualificados e usa esses aliases para definir os dois objetos.

Imports LBControl = System.Windows.Forms.ListBox
Imports MyListBox = ListBoxProject.Form1.ListBox
Dim LBC As LBControl
Dim MyLB As MyListBox

Se você usar o Importsdedemonstrativo sem alias, você pode usar todos os nomes que o namespace sem qualificação, fornecidas são exclusivas para o projeto. Se o seu projeto contém Imports declarações de namespaces que contêm itens com o mesmo nome, você deve qualificar totalmente esse nome quando você usá-lo. Suponha, por exemplo, o seu projeto contidos nas próximas duas Imports instruções:

' This namespace contains a class called Class1.
Imports MyProj1
' This namespace also contains a class called Class1.
Imports MyProj2

Se você tentar usar Class1 sem qualificar totalmente o, Visual Basic produz um erro informando que o nome Class1 é ambíguo.

Declarações de nível de namespace

Dentro de um namespace, você pode definir itens como, por exemplo, módulos, interfaces, classes, delegados, enumerações, estruturas e outros espaços para nome. Você não pode definir itens como, por exemplo, propriedades, procedimentos, variáveis e eventos em nível de namespace . Esses itens devem ser declarados em recipientes como, por exemplo, classes, estruturas ou módulos.

Palavra-chave global

If you have defined a nested hierarchy of namespaces, code inside that hierarchy might be blocked from accessing the System namespace of the .NET Framework. The following example illustrates a hierarchy in which the SpecialSpace.System namespace blocks access to System.

Namespace SpecialSpace
    Namespace System
        Class abc
            Function getValue() As System.Int32
                Dim n As System.Int32
                Return n
            End Function
        End Class
    End Namespace
End Namespace

As a result, the Visual Basic compiler cannot successfully resolve the reference to System.Int32, because SpecialSpace.System does not define Int32. You can use the Global keyword to start the qualification chain at the outermost level of the .NET Framework class library. This allows you to specify the System namespace or any other namespace in the class library. The following example illustrates this.

Namespace SpecialSpace
    Namespace System
        Class abc
            Function getValue() As Global.System.Int32
                Dim n As Global.System.Int32
                Return n
            End Function
        End Class
    End Namespace
End Namespace

You can use Global to access other root-level namespaces, such as Microsoft.VisualBasic, and any namespace associated with your project.

Consulte também

Tarefas

Como: Criar e usar Assemblies usando a linha de comando (C# e Visual Basic)

Referência

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

ListBox

System.Windows.Forms

Conceitos

Assemblies e o Cache de Assembly Global (C# e Visual Basic)

Referências e a instrução Imports (Visual Basic)