Zugriff des freigegebenen Members, konstanten Members, Enumerationsmembers oder geschachtelten Typs über eine Instanz; der qualifizierende Ausdruck wird nicht ausgewertet

Aktualisiert: November 2007

Access of shared member through an instance; qualifying expression will not be evaluated

Eine Instanzvariable einer Klasse oder Struktur wird für den Zugriff auf eine in dieser Klasse oder Struktur definierte Variable, Eigenschaft, Prozedur oder ein in dieser Klasse oder Struktur definiertes Ereignis verwendet, für die bzw. das Shared festgelegt ist. Diese Warnung kann auch auftreten, wenn eine Instanzvariable für den Zugriff auf einen implizit freigegebenen Member einer Klasse oder Struktur, z. B. eine Konstante oder Enumeration oder einer geschachtelten Klasse bzw. Struktur verwendet wird.

Ein Member wird freigegeben, um nur eine einzige Kopie dieses Members zu erstellen und diese einzige Kopie für jede Instanz der Klasse oder Struktur verfügbar zu machen, in der der Member deklariert ist. Aus diesem Grund erfolgt der Zugriff auf einen Shared-Member über den Namen seiner Klasse oder Struktur und nicht über eine Variable, die eine einzelne Instanz dieser Klasse oder Struktur enthält.

Der Zugriff auf einen Shared-Member über eine Instanzvariable kann die Verständlichkeit von Code verringern, da hierdurch verschleiert wird, dass der Member Shared ist. Wenn ein solcher Zugriff Bestandteil eines Ausdrucks ist, der weitere Aktionen ausführt, z. B. eine Function-Prozedur, die eine Instanz des freigegebenen Members zurückgibt, umgeht Visual Basic außerdem den Ausdruck sowie ggf. weitere Aktionen, die andernfalls durch den Ausdruck ausgeführt werden.

Weitere Informationen und ein Beispiel finden Sie unter Shared (Visual Basic).

Standardmäßig ist diese Meldung eine Warnung. Weitere Informationen über das Ausblenden von Warnungen bzw. über die Behandlung von Warnungen als Fehler finden Sie unter Konfigurieren von Warnungen in Visual Basic.

Fehler-ID: BC42025

So beheben Sie diesen Fehler

  • Verwenden Sie für den Zugriff auf den Shared-Member den Namen der Klasse oder der Struktur, die ihn definiert.

  • Achten Sie auf die Auswirkungen des Gültigkeitsbereichs, wenn zwei Programmierelemente denselben Namen aufweisen. Im folgenden Beispiel wird die Variable testClass mit demselben Namen wie die Klasse deklariert, deren Typ sie angehört. Der Compiler interpretiert den Aufruf an sayHello() als Zugriff durch den Klassennamen testClass, es wird keine Warnung ausgelöst.

    Public Class testClass
        Public Shared Sub sayHello()
            MsgBox("Hello")
        End Sub
    End Class
    Module testModule
        Public Sub Main()
            Dim testClass As testClass = Nothing
            testClass.sayHello()
        End Sub
    End Module
    

Siehe auch

Konzepte

Gültigkeitsbereich in Visual Basic

Referenz

Shared (Visual Basic)