Referências aos elementos declarados (Visual Basic)
Quando seu código se refere a um elemento declarado, o Visual Basic compilador corresponde ao nome na sua referência para a declaração apropriada desse nome.Se mais de um elemento for declarado com o mesmo nome, você pode controlar quais desses elementos é para ser referenciado por qualificação seu nome.
O compilador tenta comparar uma referência de nome a uma declaração de nome com o escopo mais restrito.Isso significa que ele começa com o código fazendo a referência e trabalha externamente através de níveis sucessivos de elementos recipientes.
O exemplo a seguir mostra as referências a duas variáveis com o mesmo nome.O exemplo declara duas variáveis, cada um nomeado totalCount, em diferentes níveis de escopo no módulo container.Quando o procedimento showCount exibe totalCount sem qualificação, o compilador Visual Basic resolve a referência para a declaração com o menor escopo, como a declaração dentro de showCount.Quando ele qualifica totalCount com o módulo recipiente container,o compilador resolve a referência para a declaração com o escopo mais amplo.
' Assume these two modules are both in the same assembly.
Module container
Public totalCount As Integer = 1
Public Sub showCount()
Dim totalCount As Integer = 6000
' The following statement displays the local totalCount (6000).
MsgBox("Unqualified totalCount is " & CStr(totalCount))
' The following statement displays the module's totalCount (1).
MsgBox("container.totalCount is " & CStr(container.totalCount))
End Sub
End Module
Module callingModule
Public Sub displayCount()
container.showCount()
' The following statement displays the containing module's totalCount (1).
MsgBox("container.totalCount is " & CStr(container.totalCount))
End Sub
End Module
Um nome de elemento de qualificação.
Se você quiser substituir esse processo de pesquisa e especificar um nome declarado em um escopo mais amplo, você deve qualificar o nome com o elemento que contém o escopo mais amplo.Em alguns casos, você também precisa qualificar o elemento que contém.
Classificar um nome significa precedê-lo na sua declração-fonte com informações que identificam onde o elemento-alvo está definido.Esta informação é chamada uma cadeia de caracteres de classificação.Pode incluir um ou mais namespaces e um módulo, classe ou estrutura.
A cadeia de caracteres de classificação deve especificar, de forma não ambígua, o módulo, classe ou estrutura contendo o elemento alvo.O contêiner pode ser colocado por vez em um outro contendo elemento, normalmente um namespace.Você pode precisar incluir vários elementos continentes na cadeia de caracteres de classificação.
Para acessar um elemento declarado classificando seu nome |
|
Você pode também ter que qualificar uma referência de nome se seu aplicativo tiver acesso a mais de um elemento de programação que tem o mesmo nome.Por exemplo, os namespaces System.Windows.Forms e System.Web.UI.WebControls contém ambos uma classe Label (System.Windows.Forms.Label e System.Web.UI.WebControls.Label).Se o aplicativo usa ambas, ou se ele define sua própria classe Label,você deve distinguir os objetos Label diferentes.Inclua o alias do namespace ou de importação na declaração de variável.O exemplo a seguir utiliza o alias de importação.
' The following statement must precede all your declarations.
Imports win = System.Windows.Forms, web = System.Web.UI.WebControls
' The following statement references the Windows.Forms.Label class.
Dim winLabel As New win.Label()
Membros de Outros Elementos Recipientes
Quando você usa um membro não compartilhado de outra classe ou estrutura, primeiro você deve qualificar o nome do membro com uma variável ou expressão que aponta para uma instância da classe ou estrutura.No exemplo a seguir, demoClass é uma instância de uma classe denominada class1.
Dim demoClass As class1 = New class1()
demoClass.someSub[(argumentlist)]
Não é possível usar o próprio nome da classe para qualificar um membro que não é Compartilhado (Visual Basic).Você deve primeiro criar uma instância em um variável de objeto (nesse caso demoClass) e, em seguida, fazer referência a ela, através do nome de variável.
Se uma classe ou estrutura tiver um membro Shared, você pode qualificar desse membro com o nome de classe ou estrutura ou com uma variável ou expressão que aponte para uma instância.
Um módulo não tem nenhuma instância separada, e todos os seus membros são Shared por padrão.Portanto, você qualifica um membro de módulo com o nome do módulo.
O exemplo a seguir mostra referências qualificadas a procedimentos de membro de módulo.O exemplo declara dois Sub procedimentos, ambos chamados perform, nos diferentes módulos em um projeto.Cada um deles pode ser especificado sem qualificação no seu próprio módulo mas deve ser qualificado se referenciado de qualquer outro lugar.Como referência final em module3 não se qualifica como perform, o compilador não pode resolver essa referência.
' Assume these three modules are all in the same assembly.
Module module1
Public Sub perform()
MsgBox("module1.perform() now returning")
End Sub
End Module
Module module2
Public Sub perform()
MsgBox("module2.perform() now returning")
End Sub
Public Sub doSomething()
' The following statement calls perform in module2, the active module.
perform()
' The following statement calls perform in module1.
module1.perform()
End Sub
End Module
Module module3
Public Sub callPerform()
' The following statement calls perform in module1.
module1.perform()
' The following statement makes an unresolvable name reference
' and therefore generates a COMPILER ERROR.
perform() ' INVALID statement
End Sub
End Module
Referências a Projetos
Para usar elementos Público (Visual Basic) definidos em outro projeto, você deve primeiro definir uma referência para o conjunto de módulos do projeto (assembly) ou para a biblioteca de tipos.Para definir uma referência, clique em Add Reference no menu Projeto, ou usa a opção do compilador em linha de comando /Reference (Visual Basic).
Por exemplo, você pode usar o modelo de objeto XML de .NET Framework.Se você definir uma referência ao namespace System.Xml, você poderá declarar e usar qualquer uma das suas classes, como XmlDocument.O exemplo a seguir usa XmlDocument.
' Assume this project has a reference to System.Xml
' The following statement creates xDoc as an XML document object.
Dim xDoc As System.Xml.XmlDocument
Importando Elementos Recipientes
Você pode usar Importa instrução (.NET espaço para nome e tipo) para import os namespaces que contêm os módulos ou classes que você deseja usar.Isso permite que você se refira aos elementos definidos em um namespace importado sem qualificar totalmente seus nomes.O exemplo a seguir reescreve o exemplo anterior para importar o namespace System.Xml.
' Assume this project has a reference to System.Xml
' The following statement must precede all your declarations.
Imports System.Xml
' The following statement creates xDoc as an XML document object.
Dim xDoc As XmlDocument
Além disso, a declaração Imports pode definir um alias de importação para cada namespace importado.Isso pode tornar o código-fonte mais curto e fácil de ler.O exemplo a seguir reescreve o exemplo anterior para usar xD como um alias para o namespace System.Xml.
' Assume this project has a reference to System.Xml
' The following statement must precede all your declarations.
Imports xD = System.Xml
' The following statement creates xDoc as an XML document object.
Dim xDoc As xD.XmlDocument
A declaração Imports não torna os elementos de outros projetos disponíveis para seu aplicativo.Ou seja, ele não definirá uma referência.Importar um namespace apenas remove a necessidade de qualificar nomes definidos nesse namespace.
Você também pode usar a declaração Imports para importar os módulos, classes, estruturas e enumerações.Em seguida, você pode usar os membros de tais elementos importados sem qualificação.No entanto, você sempre deve qualificar os membros não compartilhados de classes e estruturas com uma variável ou expressão que avalia para uma instância da classe ou estrutura.
Nomeando Diretrizes
Quando você define dois ou mais elementos de programação que têm o mesmo nome, uma ambiguidade de nomes pode resultar quando o compilador tenta resolver uma referência a esse nome.Se mais de uma definição estiver em escopo, ou se nenhuma definição estiver em escopo, não é possível resolver a referência..Para obter um exemplo, consulte "Exemplo de Referência Qualificada " nessa página da Ajuda.
Você pode evitar ambiguidade de nomes fornecendo nomes exclusivos a todos os seus elementos.Em seguida, você pode fazer referência a qualquer elemento sem precisar qualificar seu nome com um namespace, módulo ou classe.Você também reduzir as chances de acidentalmente se referir ao elemento errado.
Sombreamento
Quando dois elementos de programação compartilham o mesmo nome, um deles pode ocultar, ou Sombrear , o outro.Um elemento sombreado não está disponível para referência; em vez disso, quando seu código usa o nome do elemento sombreado, a Visual Basic compilador resolve para o elemento de sombreamento.Para obter uma explicação mais detalhada com exemplos, consulte Sombreamento em Visual Basic.
Consulte também
Tarefas
Como: modificar propriedades do projeto e as definições de configuração
Referência
Importa instrução (.NET espaço para nome e tipo)
Conceitos
Nomes de elementos declarados (Visual Basic)