Zugriffsebenen in Visual Basic
Aktualisiert: November 2007
Die Zugriffsebene eines deklarierten Elements gibt an, welche Zugriffsmöglichkeiten für das Element gelten, d. h. welchem Code es gestattet ist, das Element zu lesen oder Daten in das Element zu schreiben. Dies wird nicht nur durch die Deklaration des Elements selbst bestimmt, sondern auch durch die Zugriffsebene des Elementcontainers. Code, der nicht auf ein Containerelement zugreifen kann, kann auch nicht auf darin enthaltene Elemente zugreifen, selbst dann nicht, wenn diese Elemente als Public deklariert sind. Auf eine Public-Variable in einer Private-Struktur kann beispielsweise von innerhalb der Klasse zugegriffen werden, die die Struktur enthält, jedoch nicht von außerhalb dieser Klasse.
Public
Das Public (Visual Basic)-Schlüsselwort in der Deklarationsanweisung gibt an, dass von Code an beliebiger Stelle innerhalb desselben Projekts, von anderen Projekten, die auf dieses Projekt verweisen, und von einer aus diesem Projekt erstellten Assembly aus auf die Elemente zugegriffen werden kann. Im folgenden Codebeispiel wird eine Public-Beispieldeklaration gezeigt.
Public Class classForEverybody
Sie können Public nur auf Modul-, Schnittstellen- oder Namespaceebene verwenden. Daher können Sie ein öffentliches Element in Quelldateien oder Namespaces bzw. innerhalb von Schnittstellen, Modulen, Klassen oder Strukturen deklarieren, jedoch nicht in Prozeduren.
Protected
Das Protected (Visual Basic)-Schlüsselwort in der Deklarationsanweisung gibt an, dass auf die Elemente nur von derselben Klasse oder von einer von dieser Klasse abgeleiteten Klasse aus zugegriffen werden kann. Im folgenden Codebeispiel wird eine Protected-Beispieldeklaration gezeigt.
Protected Class classForMyHeirs
Sie können Protected nur auf Klassenebene verwenden und nur dann, wenn Sie einen Member einer Klasse deklarieren. Daher können Sie ein geschütztes Element in Klassen deklarieren, nicht jedoch in Quelldateien oder Namespaces bzw. innerhalb von Schnittstellen, Modulen, Strukturen oder Prozeduren.
Friend
Das Friend (Visual Basic)-Schlüsselwort in der Deklarationsanweisung gibt an, dass von innerhalb derselben Assembly auf die Elemente zugegriffen werden kann, nicht jedoch von außerhalb der Assembly. Im folgenden Codebeispiel wird eine Friend-Beispieldeklaration gezeigt.
Friend stringForThisProject As String
Sie können Friend nur auf Modul-, Schnittstellen- oder Namespaceebene verwenden. Daher können Sie Friend-Elemente in Quelldateien oder Namespaces bzw. innerhalb von Schnittstellen, Modulen, Klassen oder Strukturen deklarieren, jedoch nicht in Prozeduren.
Protected Friend
Wenn die Deklarationsanweisung sowohl das Protected-Schlüsselwort als auch das Friend-Schlüsselwort enthält, bedeutet dies, dass auf die Elemente entweder von abgeleiteten Klassen oder von innerhalb derselben Assembly bzw. von beiden aus zugegriffen werden kann. Im folgenden Codebeispiel wird eine ProtectedFriend-Beispieldeklaration gezeigt.
Protected Friend stringForProjectAndHeirs As String
Sie können ProtectedFriend nur auf Klassenebene verwenden und nur dann, wenn Sie einen Member einer Klasse deklarieren. Daher können Sie ein geschütztes Friend-Element in Klassen deklarieren, nicht jedoch in Quelldateien oder Namespaces bzw. innerhalb von Schnittstellen, Modulen, Strukturen oder Prozeduren.
Private
Das Private (Visual Basic)-Schlüsselwort in der Deklarationsanweisung gibt an, dass auf die Elemente nur von innerhalb desselben Moduls, derselben Klasse oder derselben Struktur aus zugegriffen werden kann. Im folgenden Codebeispiel wird eine Private-Beispieldeklaration gezeigt.
Private numberForMeOnly As Integer
Private kann nur auf Modulebene verwendet werden. Daher können Sie ein privates Element innerhalb von Modulen, Klassen oder Strukturen deklarieren, nicht jedoch auf der Ebene von Quelldateien oder Namespaces bzw. innerhalb von Schnittstellen oder Prozeduren.
Auf Modulebene entspricht die Dim-Anweisung ohne Zugriffsebenen-Schlüsselwörter einer Private-Deklaration. Die Verwendung des Private-Schlüsselworts wird jedoch empfohlen, um den Code leichter lesbar und verständlicher zu gestalten.
Zugriffsmodifizierer
Die Schlüsselwörter für die Angabe der Zugriffsebene werden als Zugriffsmodifizierer bezeichnet. In der folgenden Tabelle werden die Zugriffsmodifizierer verglichen.
Zugriffsmodifizierer |
Gewährte Zugriffsebene |
Elemente, die mit dieser Zugriffsebene deklariert werden können |
Deklarationskontext, in dem dieser Modifizierer verwendet werden kann |
---|---|---|---|
Public |
Uneingeschränkt: Jeder Code, der ein öffentliches Element erkennen kann, kann darauf zugreifen. |
Schnittstellen Module Klassen Strukturen Strukturmember Prozeduren Eigenschaften Membervariablen Konstanten Enumerationen Ereignisse Externe Deklarationen Delegaten |
Quelldatei Namespace Schnittstelle Modul Klasse Struktur |
Protected |
Abgeleitet: Code innerhalb der Klasse, in der ein geschütztes Element deklariert wird, oder Code in einer von dieser Klasse abgeleiteten Klasse kann auf das Element zugreifen. |
Schnittstellen Klassen Strukturen Prozeduren Eigenschaften Membervariablen Konstanten Enumerationen Ereignisse Externe Deklarationen Delegaten |
Klasse |
Friend |
Assembly: Code innerhalb der Assembly, die ein Friend-Element deklariert, kann darauf zugreifen. |
Schnittstellen Module Klassen Strukturen Strukturmember Prozeduren Eigenschaften Membervariablen Konstanten Enumerationen Ereignisse Externe Deklarationen Delegaten |
Quelldatei Namespace Schnittstelle Modul Klasse Struktur |
ProtectedFriend |
Union von Protected und Friend: Code innerhalb derselben Klasse oder Assembly wie ein geschütztes Friend-Element oder Code innerhalb einer von der Elementklasse abgeleiteten Klasse kann darauf zugreifen. |
Schnittstellen Klassen Strukturen Prozeduren Eigenschaften Membervariablen Konstanten Enumerationen Ereignisse Externe Deklarationen Delegaten |
Klasse |
Private |
Deklarationskontext: Code innerhalb des Typs, der ein privates Element deklariert, einschließlich Code innerhalb von enthaltenen Typen kann auf das Element zugreifen. |
Schnittstellen Klassen Strukturen Strukturmember Prozeduren Eigenschaften Membervariablen Konstanten Enumerationen Ereignisse Externe Deklarationen Delegaten |
Modul Klasse Struktur |
Siehe auch
Aufgaben
Gewusst wie: Steuern der Verfügbarkeit einer Variablen
Konzepte
Merkmale deklarierter Elemente
Gültigkeitsbereich in Visual Basic
Variablendeklaration in Visual Basic