skyddad (C#-referens)
Nyckelordet protected
är en medlemsåtkomstmodifierare.
Kommentar
Den här sidan beskriver protected
åtkomst. Nyckelordet protected
är också en del av protected internal
och private protected
åtkomstmodifierare.
En skyddad medlem är tillgänglig i klassen och av härledda klassinstanser.
En jämförelse av protected
med de andra åtkomstmodifierarna finns i Hjälpmedelsnivåer.
Exempel 1
En skyddad medlem i en basklass är endast tillgänglig i en härledd klass om åtkomsten sker via den härledda klasstypen. Tänk till exempel på följande kodsegment:
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;
}
}
a.x = 10
Instruktionen genererar ett fel eftersom det görs inom den statiska metoden Main och inte en instans av klass B.
Struct-medlemmar kan inte skyddas eftersom structen inte kan ärvas.
Exempel 2
I det här exemplet härleds klassen DerivedPoint
från Point
. Därför kan du komma åt de skyddade medlemmarna i basklassen direkt från den härledda klassen.
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
Om du ändrar åtkomstnivåerna x
för och y
till privat utfärdar kompilatorn felmeddelandena:
'Point.y' is inaccessible due to its protection level.
'Point.x' is inaccessible due to its protection level.
Språkspecifikation för C#
Mer information finns i Deklarerad tillgänglighet i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.