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