Freigeben über


BC30369: Auf einen Instanzmember einer Klasse kann nicht ohne explizite Instanz einer Klasse von freigegebenen Methoden oder Membern aus verwiesen werden.

Sie haben versucht, innerhalb einer freigegebenen Prozedur auf einen nicht freigegebenen Member 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 Zuweisungsanweisung x = 10 diese Fehlermeldung. Das liegt daran, dass eine freigegebene Prozedur versucht, auf eine Instanzvariable zuzugreifen.

Die Variable x ist ein Instanzmember, da sie nicht als Shared deklariert ist. Jede Instanz der Klasse Sample enthält eine eigene x-Variable. Wenn eine Instanz den Wert von x festlegt oder ändert, wirkt sich das nicht auf den Wert von x in einer anderen Instanz aus.

Die Prozedur SetX ist jedoch in allen Instanzen der Klasse Sample auf Shared festgelegt. Das bedeutet, dass sie keiner Instanz der Klasse zugeordnet ist, sondern unabhängig von einzelnen Instanzen ausgeführt wird. Da sie nicht mit einer bestimmten Instanz in Verbindung steht, kann setX nicht auf Instanzvariablen zugreifen. Sie kann nur Shared-Variablen verwenden. Wenn SetX den Wert einer freigegebenen Variablen festgelegt oder ändert, ist dieser neue Wert für alle Instanzen der Klasse verfügbar.

Fehler-ID: BC30369

So beheben Sie diesen Fehler

  1. Entscheiden Sie, ob der Member für alle Instanzen der Klasse freigegeben oder jede Instanz ihren eigenen behalten soll.

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

  3. Wenn jede Instanz über eine eigene Kopie des Members verfügen soll, geben Sie Shared nicht in der Memberdeklaration an. Entfernen Sie das Shared-Schlüsselwort aus der Prozedurdeklaration.

Weitere Informationen