BC30369: Kann nicht auf ein Instanzmitglied einer Klasse innerhalb einer freigegebenen Methode oder eines freigegebenen Memberinitialisierers verweisen, ohne dass eine explizite Instanz der Klasse vorhanden ist.

Sie haben versucht, innerhalb einer freigegebenen Prozedur auf ein nicht freigegebenes Mitglied einer Klasse zu verweisen. Im folgenden Beispiel wird eine solche Situation veranschaulicht:

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

Im vorherigen Beispiel generiert die Zuordnungsanweisung x = 10 diese Fehlermeldung. Dies liegt daran, dass eine freigegebene Prozedur versucht, auf eine Instanzvariable zuzugreifen.

Die Variable x ist ein Instanzmememm, da sie nicht als "Freigegeben" deklariert wird. Jede Instanz der Klasse Sample enthält eine eigene einzelne Variable x. Wenn eine Instanz den Wert von x"" festlegt oder ändert, wirkt sie sich nicht auf den Wert x anderer Instanzen aus.

Die Prozedur SetX gehört Shared jedoch zu allen Instanzen der Klasse Sample. Dies bedeutet, dass sie keiner Instanz der Klasse zugeordnet ist, sondern unabhängig von einzelnen Instanzen ausgeführt wird. Da sie keine Verbindung mit einer bestimmten Instanz hat, setX kann nicht auf eine Instanzvariable zugegriffen werden. Sie darf nur für Shared Variablen ausgeführt werden. Wenn SetX der Wert einer freigegebenen Variablen festgelegt oder geändert wird, ist dieser neue Wert für alle Instanzen der Klasse verfügbar.

Fehler-ID: BC30369

So beheben Sie diesen Fehler

  1. Entscheiden Sie, ob das Mitglied für alle Instanzen der Klasse freigegeben oder für jede Instanz einzeln gespeichert werden soll.

  2. Wenn eine einzelne Kopie des Mitglieds für alle Instanzen freigegeben werden soll, fügen Sie das Shared Schlüsselwort zur Memberdeklaration hinzu. Behalten Sie das Shared Schlüsselwort in der Prozedurdeklaration bei.

  3. Wenn jede Instanz über eine eigene kopie des Mitglieds verfügen soll, geben Sie für die Memberdeklaration nicht an Shared . Entfernen Sie das Shared Schlüsselwort aus der Prozedurdeklaration.

Siehe auch