Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.