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 Procedury 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 Procedury 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 Procedury 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 Protected Friend :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 Procedury 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 Procedury 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 Procedury Właściwości Zmienne składowe Stałe Wyliczenia Zdarzenia Deklaracje zewnętrzne Delegaci |
Klasa |