Toegangsniveaus in Visual Basic
Het toegangsniveau van een gedeclareerd element is de mate van toegang tot het element, dat wil weten welke code is gemachtigd om het te lezen of ernaar te schrijven. Dit wordt niet alleen bepaald door de wijze waarop u het element zelf declareert, maar ook door het toegangsniveau van de container van het element. Code die geen toegang heeft tot een element dat een element bevat, heeft geen toegang tot een van de ingesloten elementen, zelfs de elementen die zijn gedeclareerd als Public
. Een variabele in een Private
structuur kan bijvoorbeeld Public
worden geopend vanuit de klasse die de structuur bevat, maar niet van buiten die klasse.
Openbaar
Het openbare trefwoord in de declaratieinstructie geeft aan dat het element toegankelijk is vanuit code overal in hetzelfde project, uit andere projecten die verwijzen naar het project en vanuit elke assembly die is gebouwd op basis van het project. De volgende code toont een voorbeelddeclaratie Public
:
Public Class ClassForEverybody
U kunt alleen op module-, interface- of naamruimteniveau gebruiken Public
. Dit betekent dat u een openbaar element kunt declareren op het niveau van een bronbestand of naamruimte, of in een interface, module, klasse of structuur, maar niet in een procedure.
Beveiligd
Het trefwoord Beveiligd in de declaratie-instructie geeft aan dat het element alleen toegankelijk is vanuit dezelfde klasse of van een klasse die is afgeleid van deze klasse. De volgende code toont een voorbeelddeclaratie Protected
:
Protected Class ClassForMyHeirs
U kunt alleen op klasniveau gebruiken Protected
en alleen wanneer u een lid van een klasse declareert. Dit betekent dat u een beveiligd element in een klasse kunt declareren, maar niet op het niveau van een bronbestand of naamruimte, of in een interface, module, structuur of procedure.
Vriend
Het trefwoord Vriend in de declaratie-instructie geeft aan dat het element toegankelijk is vanuit dezelfde assembly, maar niet van buiten de assembly. De volgende code toont een voorbeelddeclaratie Friend
:
Friend stringForThisProject As String
U kunt alleen op module-, interface- of naamruimteniveau gebruiken Friend
. Dit betekent dat u een vriend-element kunt declareren op het niveau van een bronbestand of naamruimte, of in een interface, module, klasse of structuur, maar niet in een procedure.
Beveiligde vriend
De combinatie van het trefwoord Beveiligde vriend in de declaratie-instructie geeft aan dat het element kan worden geopend vanuit afgeleide klassen of vanuit dezelfde assembly, of beide. De volgende code toont een voorbeelddeclaratie Protected Friend
:
Protected Friend stringForProjectAndHeirs As String
U kunt alleen op klasniveau gebruiken Protected Friend
en alleen wanneer u een lid van een klasse declareert. Dit betekent dat u een beveiligd vriend-element in een klasse kunt declareren, maar niet op het niveau van een bronbestand of naamruimte, of in een interface, module, structuur of procedure.
Privé
Het sleutelwoord Privé in de declaratie-instructie geeft aan dat het element alleen toegankelijk is vanuit dezelfde module, klasse of structuur. De volgende code toont een voorbeelddeclaratie Private
:
Private _numberForMeOnly As Integer
U kunt alleen op moduleniveau gebruiken Private
. Dit betekent dat u een privé-element binnen een module, klasse of structuur kunt declareren, maar niet op het niveau van een bronbestand of naamruimte, in een interface of in een procedure.
Op moduleniveau is de Dim
instructie zonder trefwoorden op toegangsniveau gelijk aan een Private
declaratie. U kunt echter het Private
trefwoord gebruiken om uw code gemakkelijker te lezen en te interpreteren.
Privé beveiligd
De combinatie van het trefwoord Privébeveiliging in de declaratie-instructie geeft aan dat het element alleen toegankelijk is vanuit dezelfde klasse, evenals van afgeleide klassen die in dezelfde assembly zijn gevonden als de betreffende klasse. De Private Protected
toegangsaanpassing wordt ondersteund vanaf Visual Basic 15.5.
In het volgende voorbeeld ziet u een Private Protected
declaratie:
Private Protected internalValue As Integer
U kunt een Private Protected
element alleen binnen een klasse declareren. U kunt deze niet declareren binnen een interface of structuur, noch kunt u deze declareren op het niveau van een bronbestand of naamruimte, in een interface of een structuur, of in een procedure.
De Private Protected
toegangsaanpassing wordt ondersteund door Visual Basic 15.5 en hoger. Als u dit wilt gebruiken, voegt u het volgende element toe aan het Visual Basic-projectbestand (*.vbproj). Zolang Visual Basic 15.5 of hoger op uw systeem is geïnstalleerd, kunt u profiteren van alle taalfuncties die worden ondersteund door de nieuwste versie van de Visual Basic-compiler:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
Als u de Private Protected
toegangsaanpassing wilt gebruiken, moet u het volgende element toevoegen aan uw Visual Basic-projectbestand (*.vbproj):
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Zie de versie van de Visual Basic-taal instellen voor meer informatie.
Toegangsmodifiers
De trefwoorden die toegangsniveau opgeven, worden toegangsaanpassingen genoemd. In de volgende tabel worden de toegangsaanpassingen vergeleken:
Wijzigingsfunctie voor toegang | Toegangsniveau verleend | Elementen die u met dit toegangsniveau kunt declareren | Declaratiecontext waarin u deze wijzigingsfunctie kunt gebruiken |
---|---|---|---|
Public |
Onbeperkt: Elke code die een openbaar element kan zien, heeft er toegang toe |
Interfaces Modules Klassen Structuren Leden structuren Procedures Eigenschappen Lidvariabelen Constanten Opsommingen gebeurtenis Externe declaraties Gedelegeerden |
Bronbestand Naamruimte Interface Module Klas Structuur |
Protected |
Derivational: Code in de klasse die een beveiligd element declareert, of een klasse die ervan is afgeleid, heeft toegang tot het element |
Interfaces Klassen Structuren Procedures Eigenschappen Lidvariabelen Constanten Opsommingen gebeurtenis Externe declaraties Gedelegeerden |
Klas |
Friend |
Vergadering: Code in de assembly die een vriend-element declareert, kan er toegang toe krijgen |
Interfaces Modules Klassen Structuren Leden structuren Procedures Eigenschappen Lidvariabelen Constanten Opsommingen gebeurtenis Externe declaraties Gedelegeerden |
Bronbestand Naamruimte Interface Module Klas Structuur |
Protected Friend |
Samenvoeging van Protected en Friend :Code in dezelfde klasse of dezelfde assembly als een beveiligd vriend-element, of binnen een klasse die is afgeleid van de klasse van het element, heeft er toegang toe |
Interfaces Klassen Structuren Procedures Eigenschappen Lidvariabelen Constanten Opsommingen gebeurtenis Externe declaraties Gedelegeerden |
Klas |
Private |
Declaratiecontext: Code in het type dat een privé-element declareert, inclusief code binnen ingesloten typen, heeft toegang tot het element |
Interfaces Klassen Structuren Leden structuren Procedures Eigenschappen Lidvariabelen Constanten Opsommingen gebeurtenis Externe declaraties Gedelegeerden |
Module Klas Structuur |
Private Protected |
Code in de klasse die een privé beveiligd element of code declareert in een afgeleide klasse die is gevonden in dezelfde assembly als de basklasse. | Interfaces Klassen Structuren Procedures Eigenschappen Lidvariabelen Constanten Opsommingen gebeurtenis Externe declaraties Gedelegeerden |
Klas |