Partilhar via


Resolução de Problemas de Variáveis no Visual Basic

Esta página lista alguns problemas comuns que podem ocorrer ao trabalhar com variáveis no Visual Basic.

Não é possível aceder aos Membros de um Objeto

Se o código tentar aceder a uma propriedade ou método num objeto, existem dois possíveis resultados de erro:

  • O compilador pode gerar uma mensagem de erro se declarar que a variável de objeto é de um tipo específico e, em seguida, se referir a um membro não definido por esse tipo.

  • Ocorre um tempo MemberAccessException de execução quando o objeto atribuído a uma variável de objeto não expõe o membro ao qual o código está a tentar aceder. No caso de uma variável do Tipo de Dados de Objeto, também pode obter esta exceção se o membro não Publicfor . Isto deve-se ao facto de o enlace tardio permitir o acesso apenas aos Public membros.

Quando a Instrução Estrita da Opção define a verificação Ondo tipo , uma variável de objeto só pode aceder aos métodos e propriedades da classe com a qual a declara. O exemplo seguinte ilustra isto.

Dim p As Object = New System.Windows.Forms.Label
Dim q As System.Windows.Forms.Label = New System.Windows.Forms.Label
Dim j, k As Integer
' The following statement generates a compiler error.
j = p.Left
' The following statement retrieves the left edge of the label 
' in pixels.
k = q.Left

Neste exemplo, p só pode utilizar os membros da própria classe, que Object não incluem a Left propriedade. Por outro lado, q foi declarado como sendo do tipo Label, para que possa utilizar todos os métodos e propriedades da Label classe no System.Windows.Forms espaço de nomes.

Abordagem Correta

Para poder aceder a todos os membros de um objeto de uma determinada classe, declare que a variável de objeto é do tipo dessa classe sempre que possível. Se não conseguir fazê-lo, por exemplo, se não souber o tipo de objeto no momento da compilação, tem de definir Option StrictOff e declarar a variável como do Tipo de Dados de Objeto. Isto permite que objetos de qualquer tipo sejam atribuídos à variável e deve tomar medidas para garantir que o objeto atualmente atribuído é de um tipo aceitável. Pode utilizar o Operador TypeOf para fazer esta determinação.

Outros Componentes Não Conseguem Aceder à Sua Variável

Os nomes do Visual Basic não são sensíveis a maiúsculas e minúsculas. Se dois nomes forem diferentes apenas em caso alfabético, o compilador interpreta-os como o mesmo nome. Por exemplo, considera ABC e abc refere-se ao mesmo elemento declarado.

No entanto, o runtime de linguagem comum (CLR) utiliza o enlace sensível às maiúsculas e minúsculas . Por conseguinte, quando produz uma assemblagem ou uma DLL e a disponibiliza a outras assemblagens, os seus nomes já não são sensíveis a maiúsculas e minúsculas. Por exemplo, se definir uma classe com um elemento chamado ABC, e outras assemblagens utilizarem a sua classe através do runtime de linguagem comum, têm de se referir ao elemento como ABC. Se, posteriormente, recompilar a sua classe e alterar o nome do elemento para abc, as outras assemblagens que utilizam a sua classe deixarão de poder aceder a esse elemento. Por conseguinte, quando lança uma versão atualizada de uma assemblagem, não deve alterar o caso alfabético de quaisquer elementos públicos.

Para obter mais informações, veja Common Language Runtime( Common Language Runtime).

Abordagem Correta

Para permitir que outros componentes acedam às suas variáveis, trate os respetivos nomes como se fossem sensíveis às maiúsculas e minúsculas. Quando estiver a testar a sua classe ou módulo, certifique-se de que outras assemblagens estão a vincular às variáveis que espera. Depois de publicar um componente, não faça modificações aos nomes de variáveis existentes, incluindo a alteração dos respetivos casos.

Variável Errada a Ser Utilizada

Quando tem mais do que uma variável com o mesmo nome, o compilador do Visual Basic tenta resolver cada referência a esse nome. Se as variáveis tiverem um âmbito diferente, o compilador resolverá uma referência à declaração com o âmbito mais estreito. Se tiverem o mesmo âmbito, a resolução falhará e o compilador sinalizará um erro. Para obter mais informações, veja Referências a Elementos Declarados.

Abordagem Correta

Evite utilizar variáveis com o mesmo nome, mas com um âmbito diferente. Se estiver a utilizar outras assemblagens ou projetos, evite utilizar os nomes definidos nesses componentes externos tanto quanto possível. Se tiver mais do que uma variável com o mesmo nome, certifique-se de que qualifica todas as referências para a mesma. Para obter mais informações, veja Referências a Elementos Declarados.

Ver também