Poziomy dostępu w Visual Basic

Poziom dostępu zadeklarowanego elementu jest zakresem możliwości uzyskiwania do niego dostępu, czyli tego, jaki kod ma uprawnienia do jego odczytu lub zapisu. Jest to określane nie tylko przez sposób deklarowania samego elementu, ale także przez poziom dostępu kontenera elementu. Kod, który nie może uzyskać dostępu do elementu zawierającego, nie może uzyskać dostępu do żadnego z zawartych elementów, nawet tych zadeklarowanych jako Public. Na przykład Public dostęp do zmiennej Private w strukturze można uzyskać z wewnątrz klasy zawierającej strukturę, ale nie spoza tej klasy.

Publiczne

Słowo kluczowe Public w instrukcji deklaracji określa, że dostęp do elementu można uzyskać z kodu w dowolnym miejscu w tym samym projekcie, z innych projektów odwołujących się do projektu i z dowolnego zestawu utworzonego z projektu. Poniższy kod przedstawia przykładową Public deklarację:

Public Class ClassForEverybody

Można używać Public tylko na poziomie modułu, interfejsu lub przestrzeni nazw. Oznacza to, że można zadeklarować element publiczny na poziomie pliku źródłowego lub przestrzeni nazw albo wewnątrz interfejsu, modułu, klasy lub struktury, ale nie w procedurze.

Chronione

Słowo kluczowe Protected w instrukcji deklaracji określa, że dostęp do elementu można uzyskać tylko z poziomu tej samej klasy lub z klasy pochodzącej z tej klasy. Poniższy kod przedstawia przykładową Protected deklarację:

Protected Class ClassForMyHeirs

Można używać Protected tylko na poziomie klasy i tylko wtedy, gdy deklarujesz składową klasy. Oznacza to, że można zadeklarować chroniony element w klasie, ale nie na poziomie pliku źródłowego lub przestrzeni nazw albo wewnątrz interfejsu, modułu, struktury lub procedury.

Friend

Słowo kluczowe Friend w instrukcji deklaracji określa, że dostęp do elementu można uzyskać z poziomu tego samego zestawu, ale nie spoza zestawu. Poniższy kod przedstawia przykładową Friend deklarację:

Friend stringForThisProject As String

Można używać Friend tylko na poziomie modułu, interfejsu lub przestrzeni nazw. Oznacza to, że można zadeklarować element znajomy na poziomie pliku źródłowego lub przestrzeni nazw albo wewnątrz interfejsu, modułu, klasy lub struktury, ale nie w procedurze.

Protected Friend

Kombinacja słowa kluczowego Protected Friend w instrukcji deklaracji określa, że dostęp do elementu można uzyskać z klas pochodnych lub z poziomu tego samego zestawu lub obu tych elementów. Poniższy kod przedstawia przykładową Protected Friend deklarację:

Protected Friend stringForProjectAndHeirs As String

Można używać Protected Friend tylko na poziomie klasy i tylko wtedy, gdy deklarujesz składową klasy. Oznacza to, że można zadeklarować chroniony element znajomy w klasie, ale nie na poziomie pliku źródłowego lub przestrzeni nazw albo wewnątrz interfejsu, modułu, struktury lub procedury.

Prywatne

Słowo kluczowe Private w instrukcji deklaracji określa, że dostęp do elementu można uzyskać tylko z poziomu tego samego modułu, klasy lub struktury. Poniższy kod przedstawia przykładową Private deklarację:

Private _numberForMeOnly As Integer

Można używać Private tylko na poziomie modułu. Oznacza to, że można zadeklarować element prywatny wewnątrz modułu, klasy lub struktury, ale nie na poziomie pliku źródłowego lub przestrzeni nazw, wewnątrz interfejsu lub w procedurze.

Na poziomie modułu Dim instrukcja bez słów kluczowych na poziomie dostępu jest równoważna deklaracji Private . Możesz jednak użyć słowa kluczowego Private , aby ułatwić odczytywanie i interpretowanie kodu.

Private Protected

Kombinacja słowa kluczowego Private Protected w instrukcji deklaracji określa, że dostęp do elementu można uzyskać tylko z poziomu tej samej klasy, a także z klas pochodnych znalezionych w tym samym zestawie co zawierająca klasa. Modyfikator Private Protected dostępu jest obsługiwany od wersji Visual Basic 15.5.

W poniższym przykładzie pokazano deklarację Private Protected :

Private Protected internalValue As Integer

Element można zadeklarować Private Protected tylko wewnątrz klasy. Nie można zadeklarować go w interfejsie lub strukturze ani zadeklarować go na poziomie pliku źródłowego lub przestrzeni nazw, wewnątrz interfejsu lub struktury lub procedury.

Modyfikator Private Protected dostępu jest obsługiwany przez program Visual Basic 15.5 lub nowszy. Aby go użyć, należy dodać następujący element do pliku projektu Visual Basic (*.vbproj). Jeśli program Visual Basic 15.5 lub nowszy jest zainstalowany w systemie, umożliwia korzystanie ze wszystkich funkcji językowych obsługiwanych przez najnowszą wersję kompilatora języka Visual Basic:

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

Aby użyć Private Protected modyfikatora dostępu, należy dodać następujący element do pliku projektu Visual Basic (*.vbproj):

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

Aby uzyskać więcej informacji, zobacz ustawianie wersji języka Visual Basic.

Modyfikatory dostępu

Słowa kluczowe określające poziom dostępu są nazywane modyfikatorami dostępu. W poniższej tabeli porównaliśmy modyfikatory dostępu:

Modyfikator dostępu Poziom dostępu udzielony Elementy, które można zadeklarować przy użyciu tego poziomu dostępu Kontekst deklaracji, w którym można użyć tego modyfikatora
Public Nieograniczony:

Każdy kod, który może zobaczyć element publiczny, może uzyskać do niego dostęp
Interfejsy

Moduły

Klasy

Struktury

Elementy członkowskie struktury

z konkretnym obiektem

Właściwości

Zmienne składowe

Stałe

Wyliczenia

Zdarzenia

Deklaracje zewnętrzne

Delegaci
Plik źródłowy

Przestrzeń nazw

Interfejs

Moduł

Klasa

Struktura
Protected Wyprowadzanie:

Kod w klasie, która deklaruje chroniony element lub klasę pochodną, może uzyskać dostęp do elementu
Interfejsy

Klasy

Struktury

z konkretnym obiektem

Właściwości

Zmienne składowe

Stałe

Wyliczenia

Zdarzenia

Deklaracje zewnętrzne

Delegaci
Klasa
Friend Zestaw:

Kod w zestawie, który deklaruje, że element znajomy może uzyskać do niego dostęp
Interfejsy

Moduły

Klasy

Struktury

Elementy członkowskie struktury

z konkretnym obiektem

Właściwości

Zmienne składowe

Stałe

Wyliczenia

Zdarzenia

Deklaracje zewnętrzne

Delegaci
Plik źródłowy

Przestrzeń nazw

Interfejs

Moduł

Klasa

Struktura
Protected Friend Unia i ProtectedFriend:

Kod w tej samej klasie lub tym samym zestawie co chroniony element znajomy lub w dowolnej klasie pochodzącej z klasy elementu może uzyskać do niego dostęp
Interfejsy

Klasy

Struktury

z konkretnym obiektem

Właściwości

Zmienne składowe

Stałe

Wyliczenia

Zdarzenia

Deklaracje zewnętrzne

Delegaci
Klasa
Private Kontekst deklaracji:

Kod w typie, który deklaruje element prywatny, w tym kod w zawartych typach, może uzyskać dostęp do elementu
Interfejsy

Klasy

Struktury

Elementy członkowskie struktury

z konkretnym obiektem

Właściwości

Zmienne składowe

Stałe

Wyliczenia

Zdarzenia

Deklaracje zewnętrzne

Delegaci
Moduł

Klasa

Struktura
Private Protected Kod w klasie, która deklaruje prywatny element chroniony lub kod w klasie pochodnej znalezionej w tym samym zestawie co klasa bazowa. Interfejsy

Klasy

Struktury

z konkretnym obiektem

Właściwości

Zmienne składowe

Stałe

Wyliczenia

Zdarzenia

Deklaracje zewnętrzne

Delegaci
Klasa

Zobacz też