Partilhar via


BC30369: Não é possível referir-se a um membro de instância de uma classe de dentro de um método compartilhado ou inicializador de membro compartilhado sem uma instância explícita da classe

Você tentou se referir a um membro não compartilhado de uma classe de dentro de um procedimento compartilhado. O exemplo a seguir demonstra tal situação:

Class Sample
    Public x as Integer
    Public Shared Sub SetX()
        x = 10
    End Sub
End Class

No exemplo anterior, a instrução x = 10 de atribuição gera essa mensagem de erro. Isso ocorre porque um procedimento compartilhado está tentando acessar uma variável de instância.

A variável x é um membro da instância porque não é declarada como compartilhada. Cada instância de classe Sample contém sua própria variável xindividual. Quando uma instância define ou altera o valor de x, isso não afeta o valor de x em nenhuma outra instância.

No entanto, o procedimento SetX está Shared entre todas as instâncias de classe Sample. Isso significa que ele não está associado a nenhuma instância da classe, mas opera independentemente de instâncias individuais. Como ele não tem conexão com uma instância específica, setX não pode acessar uma variável de instância. Deve operar apenas em Shared variáveis. Quando SetX define ou altera o valor de uma variável compartilhada, esse novo valor está disponível para todas as instâncias da classe.

ID de erro: BC30369

Para corrigir este erro

  1. Decida se deseja que o membro seja compartilhado entre todas as instâncias da classe ou mantido individualmente para cada instância.

  2. Se desejar que uma única cópia do membro seja compartilhada entre todas as instâncias, adicione a Shared palavra-chave à declaração de membro. Mantenha a Shared palavra-chave na declaração de procedimento.

  3. Se você quiser que cada instância tenha sua própria cópia individual do membro, não especifique Shared para a declaração de membro. Remova a Shared palavra-chave da declaração de procedimento.

Ver também