beveiligd (C#-verwijzing)
Het protected
trefwoord is een wijziging voor lidtoegang.
Notitie
Op deze pagina wordt toegang behandeld protected
. Het protected
trefwoord maakt ook deel uit van de protected internal
en private protected
toegangsaanpassingen.
Een beveiligd lid is toegankelijk binnen de klasse en door afgeleide klasse-exemplaren.
Zie Toegankelijkheidsniveaus voor een vergelijking van protected
de andere toegangsaanpassingen.
Voorbeeld 1
Een beveiligd lid van een basisklasse is alleen toegankelijk in een afgeleide klasse als de toegang plaatsvindt via het afgeleide klassetype. Denk bijvoorbeeld aan het volgende codesegment:
class A
{
protected int x = 123;
}
class B : A
{
static void Main()
{
var a = new A();
var b = new B();
// Error CS1540, because x can only be accessed by
// classes derived from A.
// a.x = 10;
// OK, because this class derives from A.
b.x = 10;
}
}
De instructie a.x = 10
genereert een fout omdat deze is gemaakt in de statische methode Main en niet een exemplaar van klasse B.
Struct-leden kunnen niet worden beveiligd omdat de struct niet kan worden overgenomen.
Voorbeeld 2
In dit voorbeeld is de klasse DerivedPoint
afgeleid van Point
. Daarom hebt u rechtstreeks vanuit de afgeleide klasse toegang tot de beveiligde leden van de basisklasse.
class Point
{
protected int x;
protected int y;
}
class DerivedPoint: Point
{
static void Main()
{
var dpoint = new DerivedPoint();
// Direct access to protected members.
dpoint.x = 10;
dpoint.y = 15;
Console.WriteLine($"x = {dpoint.x}, y = {dpoint.y}");
}
}
// Output: x = 10, y = 15
Als u de toegangsniveaus van x
en y
privé wijzigt, geeft de compiler de foutberichten uit:
'Point.y' is inaccessible due to its protection level.
'Point.x' is inaccessible due to its protection level.
C#-taalspecificatie
Zie Toegankelijkheid gedeclareerd in de C#-taalspecificatie voor meer informatie. De taalspecificatie is de definitieve bron voor de C#-syntaxis en het gebruik.