Gewusst wie: Steuern des Gültigkeitsbereichs einer Variablen (Visual Basic)

Normalerweise erstreckt sich der Gültigkeitsbereich einer Variablen oder ihre Verfügbarkeit für Verweise auf den Bereich, in dem Sie sie deklarieren.In manchen Fällen wirkt sich die Zugriffsebene der Variablen auf ihren Gültigkeitsbereich aus.

Weitere Informationen finden Sie unter Gültigkeitsbereich in Visual Basic.

Gültigkeitsbereich auf Block- oder Prozedurebene

So machen Sie eine Variable nur innerhalb eines Blocks verfügbar

  • Platzieren Sie die Dim-Anweisung (Visual Basic) für die Variable zwischen die einleitenden und beendenden Deklarationsanweisungen des betreffenden Blocks, z. B. zwischen die For-Anweisung und die Next-Anweisung einer For-Schleife.

    Sie können nur innerhalb des Blocks auf die Variable verweisen.

So machen Sie eine Variable nur innerhalb einer Prozedur verfügbar

  • Platzieren Sie die Dim-Anweisung für die Variable innerhalb der Prozedur, aber außerhalb eines Blocks (beispielsweise außerhalb eines With...End With-Blocks).

    Sie können nur innerhalb der Prozedur auf die Variable verweisen. Dies gilt auch für alle Blöcke, die in der Prozedur enthalten sind.

Gültigkeitsbereich auf Modul- oder Namespaceebene

Der Einfachheit halber gilt der Begriff Modulebene gleichermaßen für Module, Klassen und Strukturen.Die Zugriffsebene einer Modulebenenvariable bestimmt ihren Gültigkeitsbereich.Der Namespace, der das Modul, die Klasse oder die Struktur enthält, wirkt sich ebenfalls auf den Gültigkeitsbereich aus.

So machen Sie eine Variable überall in einem Modul, einer Klasse oder einer Struktur verfügbar

  1. Fügen Sie die Dim-Anweisung für die Variable in das Modul, die Klasse oder die Struktur, aber außerhalb einer Prozedur ein.

  2. Fügen Sie das Private (Visual Basic)-Schlüsselwort in die Dim-Anweisung ein.

  3. Sie können von jeder beliebigen Position innerhalb des Moduls, der Klasse oder Struktur auf die Variable verweisen, jedoch nicht von einer Position außerhalb dieser Elemente.

So machen Sie eine Variable überall in einem Namespace verfügbar

  1. Fügen Sie die Dim-Anweisung für die Variable in das Modul, die Klasse oder die Struktur, aber außerhalb einer Prozedur ein.

  2. Fügen Sie das Friend (Visual Basic)-Schlüsselwort oder das Public (Visual Basic)-Schlüsselwort in die Dim-Anweisung ein.

  3. Sie können von einer beliebigen Position innerhalb des Namespaces, der das Modul, die Klasse oder die Struktur enthält, auf die Variable verweisen.

Beispiel

Im folgenden Beispiel wird eine Variable auf Modulebene deklariert und ihr Gültigkeitsbereich auf Code innerhalb des Moduls beschränkt.

Module demonstrateScope
    Private strMsg As String
    Sub initializePrivateVariable()
        strMsg = "This variable cannot be used outside this module."
    End Sub
    Sub usePrivateVariable()
        MsgBox(strMsg)
    End Sub
End Module

Im vorhergehenden Beispiel können alle im demonstrateScope-Modul definierten Prozeduren auf die String-Variable strMsg verweisen.Wenn die usePrivateVariable-Prozedur aufgerufen wird, wird der Inhalt der Zeichenfolgenvariablen strMsg in einem Dialogfeld angezeigt.

Durch die folgende Änderung des oben stehenden Beispiels kann der Code an einer beliebigen Stelle im Namespace der Deklaration auf die Zeichenfolgenvariable strMsg verweisen.

    Public strMsg As String

Robuste Programmierung

Je enger der Gültigkeitsbereich einer Variablen festgelegt ist, desto geringer ist die Wahrscheinlichkeit, dass versehentlich auf diese Variable anstelle einer anderen Variablen mit dem gleichen Namen verwiesen wird.So können ebenfalls Probleme mit übereinstimmenden Verweisen vermieden werden.

Sicherheit

Je enger der Gültigkeitsbereich einer Variablen festgelegt ist, desto geringer ist die Wahrscheinlichkeit, dass sie von bösartigem Code in unzulässiger Weise verwendet werden kann.

Siehe auch

Referenz

Dim-Anweisung (Visual Basic)

Konzepte

Gültigkeitsbereich in Visual Basic

Lebensdauer in Visual Basic

Zugriffsebenen in Visual Basic

Variablen in Visual Basic

Variablendeklaration in Visual Basic