Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma variável de instância de uma classe ou estrutura é usada para acessar uma Shared variável, propriedade, procedimento ou evento definido nessa classe ou estrutura. Esse aviso também pode ocorrer se uma variável de instância for usada para acessar um membro implicitamente compartilhado de uma classe ou estrutura, como uma constante ou enumeração, ou uma classe ou estrutura aninhada.
A finalidade de compartilhar um membro é criar apenas uma única cópia desse membro e disponibilizar essa única cópia para cada instância da classe ou estrutura na qual ele é declarado. É consistente com essa finalidade acessar um Shared membro por meio do nome de sua classe ou estrutura, em vez de por meio de uma variável que contém uma instância individual dessa classe ou estrutura.
Acessar um Shared membro por meio de uma variável de instância pode tornar seu código mais difícil de entender ocultando o fato de que o membro é Shared. Além disso, se esse acesso fizer parte de uma expressão que executa outras ações, como um Function procedimento que retorna uma instância do membro compartilhado, o Visual Basic ignora a expressão e quaisquer outras ações que ele executaria de outra forma.
Para obter mais informações e um exemplo, consulte Shared.
Por padrão, essa mensagem é um aviso. Para obter mais informações sobre como ocultar avisos ou tratar avisos como erros, consulte Configurando avisos no Visual Basic.
ID do erro: BC42025
Exemplo
O exemplo a seguir gera bc42025:
Public Class TestClass
Public Shared Sub SayHello()
Console.WriteLine("Hello")
End Sub
End Class
Module Program
Public Sub Main()
Dim tc As New TestClass()
tc.SayHello() ' BC42025.
End Sub
End Module
Para resolver esse aviso
Use o nome da classe ou estrutura que define o Shared membro para acessá-lo, conforme mostrado no exemplo a seguir:
Public Class TestClass
Public Shared Sub SayHello()
Console.WriteLine("Hello")
End Sub
End Class
Module Program
Public Sub Main()
TestClass.SayHello()
End Sub
End Module
Observação
Fique atento aos efeitos do escopo quando dois elementos de programação tiverem o mesmo nome. No exemplo anterior, se você declarar uma instância usando Dim testClass As TestClass = Nothing, o compilador tratará uma chamada testClass.SayHello() como um acesso do método por meio do nome da classe e nenhum aviso ocorrerá.