Zugriffsebenen in Visual Basic

Die Zugriffsebene eines deklarierten Elements stellt das Ausmaß der Möglichkeit dar, auf das Element zuzugreifen (d. h. welcher Code über die Berechtigung zum Lesen oder Schreiben verfügt). Dies wird nicht nur dadurch bestimmt, wie Sie das Element selbst deklarieren, sondern auch durch die Zugriffsebene des Containers des Elements. Code, der nicht auf ein enthaltenes Element zugreifen kann, kann nicht auf alle enthaltenen Elemente zugreifen, auch nicht auf diejenigen, die als Public deklariert wurden. Auf eine Public-Variable in einer Private-Struktur kann beispielsweise von innerhalb der Klasse zugegriffen werden, die die Struktur enthält, aber nicht von außerhalb dieser Klasse.

Öffentlich

Das Schlüsselwort Public in der Deklarationsanweisung gibt an, dass über Code an beliebiger Stelle im selben Projekt, über andere auf das Projekt verweisende Projekte und über jede mit dem Projekt erstellte Assembly auf das Element zugegriffen werden kann. Der folgende Code veranschaulicht eine Public-Beispieldeklaration:

Public Class ClassForEverybody

Sie können Public nur auf Modul-, Schnittstellen- oder Namespaceebene verwenden. Dies bedeutet, dass Sie ein öffentliches Element auf der Ebene einer Quelldatei oder eines Namespaces oder innerhalb einer Schnittstelle, eines Moduls, einer Klasse oder einer Struktur deklarieren können, jedoch nicht in einer Prozedur.

Protected

Das Schlüsselwort Protected in der Deklarationsanweisung gibt an, dass auf das Element nur von innerhalb derselben Klasse oder über eine von dieser Klasse abgeleiteten Klasse zugegriffen werden kann. Der folgende Code veranschaulicht eine Protected-Beispieldeklaration:

Protected Class ClassForMyHeirs

Sie können Protected nur auf Klassenebene und nur dann verwenden, wenn Sie einen Member einer Klasse deklarieren. Dies bedeutet, dass Sie ein geschütztes Element in einer Klasse deklarieren können, aber nicht auf der Ebene einer Quelldatei oder eines Namespaces oder innerhalb einer Schnittstelle, eines Moduls, einer Struktur oder einer Prozedur.

Friend

Das Schlüsselwort Friend in der Deklarationsanweisung gibt an, dass auf das Element innerhalb derselben Assembly, aber nicht von außerhalb der Assembly zugegriffen werden kann. Der folgende Code veranschaulicht eine Friend-Beispieldeklaration:

Friend stringForThisProject As String

Sie können Friend nur auf Modul-, Schnittstellen- oder Namespaceebene verwenden. Dies bedeutet, dass Sie ein Friend-Element auf der Ebene einer Quelldatei oder eines Namespaces oder innerhalb einer Schnittstelle, eines Moduls, einer Klasse oder einer Struktur deklarieren können, jedoch nicht in einer Prozedur.

Protected Friend

Die Schlüsselwortkombination Protected Friend in der Deklarationsanweisung gibt an, dass über abgeleitete Klassen, von innerhalb derselben Assembly oder über beides auf das Element zugegriffen werden kann. Der folgende Code veranschaulicht eine Protected Friend-Beispieldeklaration:

Protected Friend stringForProjectAndHeirs As String

Sie können Protected Friend nur auf Klassenebene und nur dann verwenden, wenn Sie einen Member einer Klasse deklarieren. Dies bedeutet, dass Sie ein Protected Friend-Element in einer Klasse deklarieren können, aber nicht auf der Ebene einer Quelldatei oder eines Namespaces oder innerhalb einer Schnittstelle, eines Moduls, einer Struktur oder einer Prozedur.

Privat

Das Schlüsselwort Private in der Deklarationsanweisung gibt an, dass nur von innerhalb desselben Moduls, derselben Klasse oder Struktur auf das Element zugegriffen werden kann. Der folgende Code veranschaulicht eine Private-Beispieldeklaration:

Private _numberForMeOnly As Integer

Sie können Private nur auf Modulebene verwenden. Dies bedeutet, dass Sie ein privates Element innerhalb eines Moduls, einer Klasse oder einer Struktur deklarieren können, jedoch nicht auf der Ebene einer Quelldatei oder eines Namespaces, innerhalb einer Schnittstelle oder in einer Prozedur.

Auf Modulebene entspricht die Dim-Anweisung ohne Zugriffsebenen-Schlüsselwörter einer Private-Deklaration. Möglicherweise müssen Sie jedoch das Private-Schlüsselwort verwenden, um das Lesen und Interpretieren des Codes zu vereinfachen.

Private Protected

Die Schlüsselwortkombination Private Protected in der Deklarationsanweisung gibt an, dass nur von innerhalb derselben Klasse sowie über abgeleitete Klassen auf das Element zugegriffen werden kann, die in derselben Assembly wie die enthaltende Klasse vorliegen. Der Private Protected-Zugriffsmodifizierer wird ab Visual Basic 15.5 unterstützt.

Das folgende Beispiel veranschaulicht eine Private Protected-Deklaration:

Private Protected internalValue As Integer

Sie können ein Private Protected-Element nur innerhalb einer Klasse deklarieren. Sie können es weder innerhalb einer Schnittstelle oder Struktur deklarieren noch auf der Ebene einer Quelldatei oder eines Namespaces, innerhalb einer Schnittstelle oder Struktur oder in einer Prozedur.

Der Private Protected-Zugriffsmodifizierer wird von Visual Basic 15.5 und höher unterstützt. Für die Verwendung fügen Sie Ihrer Visual Basic-Projektdatei (*.vbproj) das folgende Element hinzu. Solange Visual Basic 15.5 oder höher auf Ihrem System installiert ist, können Sie alle Sprachfeatures nutzen, die von der neuesten Version des Visual Basic-Compilers unterstützt werden:

<PropertyGroup>
   <LangVersion>latest</LangVersion>
</PropertyGroup>

Für die Verwendung des Private Protected-Zugriffsmodifizierers müssen Sie Ihrer Visual Basic-Projektdatei (*.vbproj) das folgende Element hinzufügen:

<PropertyGroup>
   <LangVersion>15.5</LangVersion>
</PropertyGroup>

Weitere Informationen finden Sie unter Festlegen der Visual Basic-Sprachversion.

Zugriffsmodifizierer

Die Schlüsselwörter, die die Zugriffsebene angeben, werden als Zugriffsmodifizierer bezeichnet. In der folgenden Tabelle werden die Zugriffsmodifizierer verglichen:

Zugriffsmodifizierer Gewährte Zugriffsebene Elemente, die Sie mit dieser Zugriffsebene deklarieren können Deklarationskontext, in dem Sie diesen Modifizierer verwenden können
Public Uneingeschränkt:

Jeder Code, der ein Public-Element anzeigen 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 in der Klasse, die ein Protected-Element deklariert, oder eine von ihr abgeleitete Klasse kann auf das Element zugreifen.
Schnittstellen

Klassen

Strukturen

Prozeduren

Eigenschaften

Membervariablen

Konstanten

Enumerationen

Ereignisse

Externe Deklarationen

Delegaten
Klasse
Friend Assembly:

Code in 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
Protected Friend Vereinigung von Protected und Friend:

Code in derselben Klasse oder derselben Assembly wie ein Protected Friend-Element oder innerhalb einer von der Klasse des Elements abgeleiteten Klasse kann darauf zugreifen.
Schnittstellen

Klassen

Strukturen

Prozeduren

Eigenschaften

Membervariablen

Konstanten

Enumerationen

Ereignisse

Externe Deklarationen

Delegaten
Klasse
Private Deklarationskontext:

Code in dem Typ, der ein Private-Element deklariert (einschließlich Code in enthaltenen Typen), kann auf das Element zugreifen.
Schnittstellen

Klassen

Strukturen

Strukturmember

Prozeduren

Eigenschaften

Membervariablen

Konstanten

Enumerationen

Ereignisse

Externe Deklarationen

Delegaten
Modul

Klasse

Struktur
Private Protected Code in der Klasse, die ein Private Protected-Element deklariert, oder Code in einer abgeleiteten Klasse, die in derselben Assembly wie die Basisklasse gefunden wurde Schnittstellen

Klassen

Strukturen

Prozeduren

Eigenschaften

Membervariablen

Konstanten

Enumerationen

Ereignisse

Externe Deklarationen

Delegaten
Klasse

Siehe auch