A maneira mais comum de os namespaces do VB.NET serem usados pela maioria dos programadores é informar ao compilador quais bibliotecas do .NET Framework são necessárias para um programa específico. Quando você escolhe um "modelo" para o seu projeto (como "Aplicativo Windows Forms"), uma das coisas que você escolhe é o conjunto específico de namespaces que serão referenciados automaticamente em seu projeto. Isso disponibiliza o código nesses espaços de nomes para o seu programa.
Por exemplo, alguns dos espaços para nome e os arquivos reais em que estão no Aplicativo Windows Forms são:
Sistema> em System.dll
Sistema. Dados> no sistema. Data.dll
Sistema. Implantação> Sistema. Deployment.dll
Sistema. Desenho> Sistema. Drawing.dll
Sistema. Janelas. Formulários> Sistema. Janelas. Forms.dll
Você pode ver (e alterar) os espaços para nome e as referências para o seu projeto nas propriedades do projeto, no diretório Referências aba.
Essa maneira de pensar sobre espaços para nome os faz parecer exatamente a mesma coisa que "biblioteca de códigos", mas isso é apenas parte da idéia. O benefício real dos espaços para nome é a organização.
Muitos de nós não terão a chance de estabelecer uma nova hierarquia de namespace, porque geralmente é feita apenas uma vez 'no início' para uma biblioteca de códigos grande e complicada. Mas, aqui, você aprenderá a interpretar os namespaces que serão solicitados a usar em muitas organizações.
O que os namespaces fazem
Os namespaces possibilitam organizar as dezenas de milhares de objetos do .NET Framework e todos os objetos que os programadores do VB criam nos projetos também, para que não colidam.
Por exemplo, se você procurar no .NET por um Cor objeto, você encontra dois. Existe um Cor objeto em ambos:
Sistema. Desenhando
Sistema. Janelas. meios de comunicação
Se você adicionar um Importações para os dois namespaces (uma referência também pode ser necessária para as propriedades do projeto) ...
Sistema de Importação. Desenhando
Sistema de Importação. Janelas. meios de comunicação
... então uma declaração como ...
Dim a As Color
... será sinalizado como um erro na nota "A cor é ambígua" e o .NET indicará que os dois namespaces contêm um objeto com esse nome. Esse tipo de erro é chamado de "colisão de nome".
Essa é a verdadeira razão dos "namespaces" e também é a maneira como os namespaces são usados em outras tecnologias (como XML). Os espaços para nome tornam possível usar o mesmo nome de objeto, como Cor, quando o nome se encaixa e ainda mantém as coisas organizadas. Você pode definir um Cor objeto em seu próprio código e mantenha-o distinto dos do .NET (ou do código de outros programadores).
Namespace MyColor
Cor da classe pública
Subcor ()
' Faça alguma coisa
End Sub
Classe final
End Namespace
Você também pode usar o Cor objeto em outro lugar em seu programa como este:
Dim c As New MyColor. Cor
c. Cor()
Antes de abordar alguns dos outros recursos, saiba que todos os projetos estão contidos em um espaço para nome. O VB.NET usa o nome do seu projeto (WindowsApplication1 para um aplicativo de formulários padrão, se você não o alterar) como o espaço para nome padrão. Para ver isso, crie um novo projeto (usamos o nome NSProj e confira a ferramenta Navegador de objetos):
- Clique Aqui para exibir a ilustração
- Clique no Costas no seu navegador para retornar
O Pesquisador de objetos mostra seu novo espaço para nome do projeto (e os objetos definidos automaticamente nele) junto com os espaços para nome do .NET Framework. Essa capacidade do VB.NET de tornar seus objetos iguais aos objetos .NET é uma das chaves do poder e da flexibilidade. Por exemplo, é por isso que o Intellisense mostrará seus próprios objetos assim que você os definir.
Para aumentar um pouco, vamos definir um novo projeto (nomeamos o nosso NewNSProj na mesma solução (use Arquivo > Adicionar > Novo projeto ...) e codifique um novo espaço para nome nesse projeto. E apenas para torná-lo mais divertido, vamos colocar o novo espaço para nome em um novo módulo (nós o denominamos NewNSMod). E como um objeto deve ser codificado como uma classe, também adicionamos um bloco de classe (chamado NewNSObj). Aqui está o código e o Solution Explorer para mostrar como ele se encaixa:
- Clique Aqui para exibir a ilustração
- Clique no Costas no seu navegador para retornar
Como seu próprio código é 'igual ao código do Framework', é necessário adicionar uma referência a NewNSMod dentro NSProj para usar o objeto no espaço para nome, mesmo que eles estejam na mesma solução. Feito isso, você pode declarar um objeto em NSProj com base no método NewNSMod. Você também precisa "construir" o projeto para que exista um objeto real para referência.
Dim o As New NewNSProj. AVBNS.NewNSMod. NewNSObj
o. AVBNSMethod ()
Isso é bastante Dim declaração embora. Podemos encurtar isso usando um Importações declaração com um alias.
Importa NS = NewNSProj. AVBNS.NewNSMod. NewNSObj
...
Dim o As New NS
o. AVBNSMethod ()
Clicar no botão Executar exibe o MsgBox do espaço de nomes AVBNS, "Ei! Funcionou!"
Quando e por que usar espaços para nome
Tudo até agora realmente foi sintaxe - a codificação regras que você deve seguir ao usar espaços para nome. Mas, para realmente aproveitar, você precisa de duas coisas:
- Um requisito para organização de namespace em primeiro lugar. Você precisa de mais do que apenas um projeto "Hello World" antes que a organização dos namespaces comece a dar frutos.
- Um plano para usá-los.
Em geral, Microsoft recomenda que você organize o código da sua organização usando uma combinação do nome da sua empresa com o nome do produto.
Então, por exemplo, se você é o arquiteto-chefe de software da cirurgia plástica do nariz do dr. No, convém organizar seus espaços para nome como ...
DRNo
Consultando
ReadTheirWatchNChargeEm
TellEmNuthin
Cirurgia
Elefante
MyEyeLidsRGone
Isso é semelhante à organização do .NET ...
Objeto
Sistema
Testemunho
IO
Linq
Dados
Odbc
Sql
Os namespaces multiníveis são alcançados simplesmente aninhando os blocos de namespace.
Namespace DRNo
Namespace Surgery
Namespace MyEyeLidsRGone
«Código VB
End Namespace
End Namespace
End Namespace
ou
Namespace DRNo. Cirurgia. MyEyeLidsRGone
«Código VB
End Namespace