BC30369: Nelze odkazovat na člena instance třídy ze sdílené metody nebo inicializátoru sdíleného člena bez explicitní instance třídy.

Pokusili jste se odkazovat na nesdíleného člena třídy ze sdílené procedury. Následující příklad ukazuje takovou situaci:

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

V předchozím příkladu příkaz x = 10 přiřazení vygeneruje tuto chybovou zprávu. Důvodem je, že se sdílený postup pokouší o přístup k proměnné instance.

Proměnná x je členem instance, protože není deklarována jako Shared. Každá instance třídy Sample obsahuje svou vlastní individuální proměnnou x. Když jedna instance nastaví nebo změní hodnotu x, nemá vliv na hodnotu x v žádné jiné instanci.

SetX Postup je Shared však mezi všemi instancemi třídy Sample. To znamená, že není přidružená k žádné instanci třídy, ale spíše funguje nezávisle na jednotlivých instancích. Vzhledem k tomu, že nemá žádné spojení s konkrétní instancí, setX nemá přístup k proměnné instance. Musí pracovat pouze s Shared proměnnými. Když SetX nastaví nebo změní hodnotu sdílené proměnné, tato nová hodnota je k dispozici pro všechny instance třídy.

ID chyby: BC30369

Oprava této chyby

  1. Rozhodněte se, jestli chcete člena sdílet mezi všemi instancemi třídy, nebo jestli chcete člena uchovávat jednotlivě pro každou instanci.

  2. Pokud chcete, aby se jedna kopie člena sdílela mezi všemi instancemi, přidejte Shared klíčové slovo do deklarace člena. Shared Zachovejte klíčové slovo v deklaraci procedury.

  3. Pokud chcete, aby každá instance měla vlastní individuální kopii člena, nezadávejte Shared pro deklaraci člena. Shared Odeberte klíčové slovo z deklarace procedury.

Viz také