Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das protected
-Schlüsselwort ist ein Zugriffsmodifizierer für Member.
Hinweis
Auf dieser Seite wird der Zugriff auf protected
behandelt. Das protected
Schlüsselwort ist auch Teil der protected internal
- und private protected
-Zugriffsmodifizierer.
Auf ein geschütztes Element kann innerhalb der Klasse und durch abgeleitete Klasseninstanzen zugegriffen werden.
Einen Vergleich mit protected
den anderen Zugriffsmodifizierern finden Sie unter Barrierefreiheitsstufen.
Beispiel 1
Auf ein geschütztes Element einer Basisklasse kann nur zugegriffen werden, wenn der Zugriff über den abgeleiteten Klassentyp erfolgt. Betrachten Sie beispielsweise das folgende 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 through
// the derived class type, not through the base class type.
// a.x = 10;
// OK, because this class derives from A.
b.x = 10;
}
}
Die Anweisung a.x = 10
generiert einen Fehler, da sie über einen Basisklassenverweis (a
ist vom Typ A
) auf das geschützte Element zugreift. Auf geschützte Member kann nur über den Typ der abgeleiteten Klasse oder von ihr abgeleitete Typen zugegriffen werden.
Strukturmmber können nicht geschützt werden, da die Struktur nicht geerbt werden kann.
Beispiel 2
In diesem Beispiel wird die Klasse DerivedPoint
von Point
abgeleitet. Daher können Sie direkt von der abgeleiteten Klasse aus auf die geschützten Member der Basisklasse zugreifen.
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
Wenn Sie die Zugriffsebenen von x
und y
zu privat ändern, gibt der Compiler die Fehlermeldungen aus:
'Point.y' is inaccessible due to its protection level.
'Point.x' is inaccessible due to its protection level.
C#-Sprachspezifikation
Weitere Informationen finden Sie unter "Deklarierte Barrierefreiheit in der C#-Sprachspezifikation". Die Sprachspezifikation ist die endgültige Quelle für C#-Syntax und -Verwendung.