BC30369: Nie można odwołać się do składowej wystąpienia klasy z poziomu metody udostępnionej lub udostępnionego inicjatora składowego bez jawnego wystąpienia klasy

Próbowano odwołać się do nieudzielonego elementu członkowskiego klasy z poziomu procedury udostępnionej. W poniższym przykładzie pokazano taką sytuację:

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

W poprzednim przykładzie instrukcja x = 10 przypisania generuje ten komunikat o błędzie. Dzieje się tak, ponieważ procedura udostępniona próbuje uzyskać dostęp do zmiennej wystąpienia.

Zmienna x jest elementem członkowskim wystąpienia, ponieważ nie jest zadeklarowana jako Współdzielona. Każde wystąpienie klasy Sample zawiera własną zmienną xindywidualną . Gdy jedno wystąpienie ustawia lub zmienia wartość x, nie ma wpływu na wartość x w żadnym innym wystąpieniu.

Jednak procedura SetX należy Shared do wszystkich wystąpień klasy Sample. Oznacza to, że nie jest ona skojarzona z żadnym wystąpieniem klasy, ale działa niezależnie od poszczególnych wystąpień. Ponieważ nie ma połączenia z konkretnym wystąpieniem, setX nie może uzyskać dostępu do zmiennej wystąpienia. Musi działać tylko na Shared zmiennych. Gdy SetX ustawia lub zmienia wartość zmiennej udostępnionej, ta nowa wartość jest dostępna dla wszystkich wystąpień klasy.

Identyfikator błędu: BC30369

Aby naprawić ten błąd

  1. Zdecyduj, czy element członkowski ma być współużytkowany między wszystkimi wystąpieniami klasy, czy zachowany indywidualnie dla każdego wystąpienia.

  2. Jeśli chcesz, aby pojedyncza kopia elementu członkowskiego była współdzielona między wszystkimi wystąpieniami, dodaj Shared słowo kluczowe do deklaracji elementu członkowskiego. Zachowaj Shared słowo kluczowe w deklaracji procedury.

  3. Jeśli chcesz, aby każde wystąpienie miało własną pojedynczą kopię elementu członkowskiego, nie należy określać Shared deklaracji elementu członkowskiego. Shared Usuń słowo kluczowe z deklaracji procedury.

Zobacz także