BC30369: no se puede hacer referencia a un miembro de instancia de una clase desde un método compartido o un inicializador de miembro compartido sin una instancia explícita de la clase

Ha intentado hacer referencia a un miembro no compartido de una clase desde un procedimiento compartido. En el ejemplo siguiente se muestra esta situación:

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

En el ejemplo anterior, la instrucción x = 10 de asignación genera este mensaje de error. Esto se debe a que un procedimiento compartido intenta acceder a una variable de instancia.

La variable x es un miembro de instancia porque no se declara como Compartido. Cada instancia de clase Sample contiene su propia variable xindividual . Cuando una instancia establece o cambia el valor de x, no afecta al valor de x en ninguna otra instancia.

Sin embargo, el procedimiento SetX está Shared entre todas las instancias de la clase Sample. Esto significa que no está asociado a ninguna instancia de la clase, sino que funciona independientemente de instancias individuales. Dado que no tiene conexión con una instancia determinada, setX no puede acceder a una variable de instancia. Solo debe funcionar en Shared variables. Cuando SetX establece o cambia el valor de una variable compartida, ese nuevo valor está disponible para todas las instancias de la clase .

Identificador de error: BC30369

Para corregir este error

  1. Decida si desea que el miembro se comparta entre todas las instancias de la clase o se mantenga individual para cada instancia.

  2. Si desea que una sola copia del miembro se comparta entre todas las instancias, agregue la Shared palabra clave a la declaración de miembro. Conserve la Shared palabra clave en la declaración de procedimiento.

  3. Si desea que cada instancia tenga su propia copia individual del miembro, no especifique Shared para la declaración de miembro. Quite la Shared palabra clave de la declaración de procedimiento.

Consulte también