Freigeben über


Zugriffsebenen in Visual Basic

Die Zugriffsebene eines deklarierten Elements ist der Umfang der Möglichkeit, darauf 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 Publicdeklariert wurden. Auf eine Public Variable in einer Private Struktur kann beispielsweise innerhalb der Klasse zugegriffen werden, die die Struktur enthält, aber nicht von außerhalb dieser Klasse.

Öffentlichkeit

Das Schlüsselwort Public in der Deklarationsanweisung gibt an, dass auf das Element von Code überall im selben Projekt aus zugegriffen werden kann, aus anderen Projekten, die auf das Projekt verweisen, und von jeder Assembly, die aus dem Projekt erstellt wurde. Der folgende Code zeigt eine Beispieldeklaration Public :

Public Class ClassForEverybody

Sie können nur auf Modul-, Schnittstellen- oder Namespaceebene verwenden Public . 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.

Geschützt

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

Protected Class ClassForMyHeirs

Sie können Protected nur auf Klassenebene verwenden und nur dann, wenn Sie ein Mitglied 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.

Freund

Das Friend-Schlüsselwort 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 zeigt eine Beispieldeklaration Friend :

Friend stringForThisProject As String

Sie können nur auf Modul-, Schnittstellen- oder Namespaceebene verwenden Friend . 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.

Geschützter Freund

Die Schlüsselwortkombination "Protected Friend " in der Deklarationsanweisung gibt an, dass auf das Element entweder aus abgeleiteten Klassen oder innerhalb derselben Assembly oder beides zugegriffen werden kann. Der folgende Code zeigt eine Beispieldeklaration Protected Friend :

Protected Friend stringForProjectAndHeirs As String

Sie können Protected Friend nur auf Klassenebene verwenden und nur dann, wenn Sie ein Mitglied einer Klasse deklarieren. Dies bedeutet, dass Sie ein geschütztes 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 auf das Element nur innerhalb desselben Moduls, derselben Klasse oder Struktur zugegriffen werden kann. Der folgende Code zeigt eine Beispieldeklaration Private :

Private _numberForMeOnly As Integer

Sie können nur auf Modulebene verwenden Private . 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 Schlüsselwörter auf Zugriffsebene einer Private Deklaration. Möglicherweise möchten Sie jedoch das Private Schlüsselwort verwenden, um das Lesen und Interpretieren des Codes zu vereinfachen.

Privat geschützt

Die Kombination aus dem Schlüsselwort "Private Protected " in der Deklarationsanweisung gibt an, dass auf das Element nur innerhalb derselben Klasse zugegriffen werden kann, sowie von abgeleiteten Klassen, die in derselben Assembly wie die enthaltende Klasse enthalten sind. Der Private Protected Zugriffsmodifizierer wird ab Visual Basic 15.5 unterstützt.

Das folgende Beispiel zeigt eine Private Protected Deklaration:

Private Protected internalValue As Integer

Sie können ein Private Protected Element nur innerhalb einer Klasse deklarieren. Sie können sie 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 deklarieren.

Der Private Protected Zugriffsmodifizierer wird von Visual Basic 15.5 und höher unterstützt. Um es zu verwenden, fügen Sie das folgende Element zu Ihrer Visual Basic-Projektdatei (*.vbproj) 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>

Um den Private Protected Zugriffsmodifizierer zu verwenden, müssen Sie dem Visual Basic-Projekt (*.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 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 öffentliches Element sehen kann, kann darauf zugreifen
Schnittstellen

Module

Klassen

Strukturen

Strukturmember

Prozeduren

Eigenschaften

Mitgliedsvariablen

Konstanten

Enumerationen

Ereignisse

Externe Deklarationen

Delegierte
Quelldatei

Namespace

Schnittstelle

Modul

Klasse

Struktur
Protected Abgeleitet:

Code in der Klasse, die ein geschütztes Element deklariert, oder eine von ihr abgeleitete Klasse, kann auf das Element zugreifen
Schnittstellen

Klassen

Strukturen

Prozeduren

Eigenschaften

Mitgliedsvariablen

Konstanten

Enumerationen

Ereignisse

Externe Deklarationen

Delegierte
Klasse
Friend Versammlung:

Code in der Assembly, der ein Friend-Element deklariert, kann darauf zugreifen
Schnittstellen

Module

Klassen

Strukturen

Strukturmember

Prozeduren

Eigenschaften

Mitgliedsvariablen

Konstanten

Enumerationen

Ereignisse

Externe Deklarationen

Delegierte
Quelldatei

Namespace

Schnittstelle

Modul

Klasse

Struktur
Protected Friend Vereinigung von Protected und Friend:

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

Klassen

Strukturen

Prozeduren

Eigenschaften

Mitgliedsvariablen

Konstanten

Enumerationen

Ereignisse

Externe Deklarationen

Delegierte
Klasse
Private Deklarationskontext:

Code in dem Typ, der ein privates Element deklariert, einschließlich Code in enthaltenen Typen, kann auf das Element zugreifen
Schnittstellen

Klassen

Strukturen

Strukturmember

Prozeduren

Eigenschaften

Mitgliedsvariablen

Konstanten

Enumerationen

Ereignisse

Externe Deklarationen

Delegierte
Modul

Klasse

Struktur
Private Protected Code in der Klasse, die ein privates geschütztes Element deklariert, oder Code in einer abgeleiteten Klasse, die in derselben Assembly wie die Basklasse gefunden wurde. Schnittstellen

Klassen

Strukturen

Prozeduren

Eigenschaften

Mitgliedsvariablen

Konstanten

Enumerationen

Ereignisse

Externe Deklarationen

Delegierte
Klasse

Siehe auch