Åtkomstnivåer i Visual Basic
Åtkomstnivån för ett deklarerat element är omfattningen av möjligheten att komma åt det, dvs. vilken kod som har behörighet att läsa det eller skriva till det. Detta bestäms inte bara av hur du deklarerar själva elementet, utan även av åtkomstnivån för elementets container. Kod som inte kan komma åt ett innehållande element kan inte komma åt något av dess inneslutna element, även de som deklareras som Public
. En variabel i en Private
struktur kan till exempel Public
nås inifrån klassen som innehåller strukturen, men inte utanför den klassen.
Offentliga
Nyckelordet Offentligt i deklarationsinstrukmentet anger att elementet kan nås från kod var som helst i samma projekt, från andra projekt som refererar till projektet och från alla sammansättningar som skapats från projektet. Följande kod visar en exempeldeklaration Public
:
Public Class ClassForEverybody
Du kan bara använda Public
på modul-, gränssnitts- eller namnområdesnivå. Det innebär att du kan deklarera ett offentligt element på nivån för en källfil eller ett namnområde, eller i ett gränssnitt, en modul, en klass eller en struktur, men inte i en procedur.
Skyddad
Nyckelordet Skyddat i deklarationssatsen anger att elementet endast kan nås från samma klass eller från en klass som härletts från den här klassen. Följande kod visar en exempeldeklaration Protected
:
Protected Class ClassForMyHeirs
Du kan bara använda Protected
på klassnivå och endast när du deklarerar en medlem i en klass. Det innebär att du kan deklarera ett skyddat element i en klass, men inte på nivån för en källfil eller ett namnområde, eller i ett gränssnitt, en modul, en struktur eller en procedur.
Vän
Nyckelordet Vän i deklarationssatsen anger att elementet kan nås från samma sammansättning, men inte utanför sammansättningen. Följande kod visar en exempeldeklaration Friend
:
Friend stringForThisProject As String
Du kan bara använda Friend
på modul-, gränssnitts- eller namnområdesnivå. Det innebär att du kan deklarera ett vänelement på nivån för en källfil eller ett namnområde, eller i ett gränssnitt, en modul, en klass eller en struktur, men inte i en procedur.
Skyddad vän
Nyckelordskombinationen Skyddad vän i deklarationsinstruktionen anger att elementet kan nås antingen från härledda klasser eller från samma sammansättning eller båda. Följande kod visar en exempeldeklaration Protected Friend
:
Protected Friend stringForProjectAndHeirs As String
Du kan bara använda Protected Friend
på klassnivå och endast när du deklarerar en medlem i en klass. Det innebär att du kan deklarera ett skyddat vänelement i en klass, men inte på nivån för en källfil eller ett namnområde, eller i ett gränssnitt, en modul, en struktur eller en procedur.
Privat
Nyckelordet Privat i deklarationssatsen anger att elementet endast kan nås från samma modul, klass eller struktur. Följande kod visar en exempeldeklaration Private
:
Private _numberForMeOnly As Integer
Du kan bara använda Private
på modulnivå. Det innebär att du kan deklarera ett privat element i en modul, klass eller struktur, men inte på nivån för en källfil eller ett namnområde, i ett gränssnitt eller i en procedur.
På modulnivå motsvarar instruktionen Dim
utan nyckelord på åtkomstnivå en Private
deklaration. Du kanske vill använda nyckelordet Private
för att göra koden enklare att läsa och tolka.
Privat skyddad
Den privata skyddade nyckelordskombinationen i deklarationsinstruktionen anger att elementet endast kan nås från samma klass, samt från härledda klasser som finns i samma sammansättning som den innehållande klassen. Åtkomstmodifieraren Private Protected
stöds från och med Visual Basic 15.5.
I följande exempel visas en Private Protected
deklaration:
Private Protected internalValue As Integer
Du kan bara deklarera ett Private Protected
element i en klass. Du kan inte deklarera den i ett gränssnitt eller en struktur, och du kan inte heller deklarera den på nivån för en källfil eller ett namnområde, i ett gränssnitt eller en struktur eller i en procedur.
Åtkomstmodifieraren Private Protected
stöds av Visual Basic 15.5 och senare. Om du vill använda det lägger du till följande element i visual basic-projektfilen (*.vbproj). Så länge Visual Basic 15.5 eller senare har installerats på systemet kan du dra nytta av alla språkfunktioner som stöds av den senaste versionen av Visual Basic-kompilatorn:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
Om du vill använda Private Protected
åtkomstmodifieraren måste du lägga till följande element i visual basic-projektfilen (*.vbproj):
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Mer information finns i ställa in visual basic-språkversionen.
Åtkomstmodifierare
Nyckelorden som anger åtkomstnivå kallas åtkomstmodifierare. I följande tabell jämförs åtkomstmodifierarna:
Åtkomstmodifierare | Åtkomstnivå beviljad | Element som du kan deklarera med den här åtkomstnivån | Deklarationskontext där du kan använda den här modifieraren |
---|---|---|---|
Public |
Obegränsad: All kod som kan se ett offentligt element kan komma åt det |
Gränssnitt Moduler Klasser Strukturer Strukturmedlemmar Förfaranden Egenskaper Medlemsvariabler Konstanter Uppräkningar Händelser Externa deklarationer Delegeringar |
Källfil Namnområde Gränssnitt Modul Klass Struktur |
Protected |
Härledning: Kod i klassen som deklarerar ett skyddat element, eller en klass som härleds från det, kan komma åt elementet |
Gränssnitt Klasser Strukturer Förfaranden Egenskaper Medlemsvariabler Konstanter Uppräkningar Händelser Externa deklarationer Delegeringar |
Klass |
Friend |
Församling: Kod i sammansättningen som deklarerar att ett vän-element kan komma åt det |
Gränssnitt Moduler Klasser Strukturer Strukturmedlemmar Förfaranden Egenskaper Medlemsvariabler Konstanter Uppräkningar Händelser Externa deklarationer Delegeringar |
Källfil Namnområde Gränssnitt Modul Klass Struktur |
Protected Friend |
Union of Protected och Friend :Kod i samma klass eller samma sammansättning som ett skyddat vän-element, eller inom någon klass som härleds från elementets klass, kan komma åt den |
Gränssnitt Klasser Strukturer Förfaranden Egenskaper Medlemsvariabler Konstanter Uppräkningar Händelser Externa deklarationer Delegeringar |
Klass |
Private |
Deklarationskontext: Kod i den typ som deklarerar ett privat element, inklusive kod i inneslutna typer, kan komma åt elementet |
Gränssnitt Klasser Strukturer Strukturmedlemmar Förfaranden Egenskaper Medlemsvariabler Konstanter Uppräkningar Händelser Externa deklarationer Delegeringar |
Modul Klass Struktur |
Private Protected |
Kod i klassen som deklarerar ett privat skyddat element eller kod i en härledd klass som finns i samma sammansättning som basklassen. | Gränssnitt Klasser Strukturer Förfaranden Egenskaper Medlemsvariabler Konstanter Uppräkningar Händelser Externa deklarationer Delegeringar |
Klass |