Freigeben über


protected (C#-Referenz)

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.

Siehe auch