protected (C#-Referenz)

Aktualisiert: November 2007

Bei dem protected-Schlüsselwort handelt es sich um einen Zugriffsmodifizierer für Member. Ein geschützter Member ist innerhalb seiner Klasse und für abgeleitete Klasseninstanzen zugreifbar. Einen Vergleich von protected mit den anderen Zugriffsmodifizierern finden Sie unter Zugriffsebenen.

Beispiel

Auf einen geschützten Member einer Basisklasse kann nur dann in einer abgeleiteten Klasse zugegriffen werden, wenn der Zugriff über den abgeleiteten Klassentyp erfolgt. Betrachten Sie z. B. das folgende Codesegment:

class A
{
    protected int x = 123;
}

class B : A
{
    static void Main()
    {
        A a = new A();
        B 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;
    }
}

Die Anweisung a.x = 10 führt zu einem Fehler, da sie innerhalb der statischen Main-Methode und nicht als Instanz der Klasse B erstellt wird.

Strukturmember können nicht geschützt werden, da die Struktur nicht vererbt werden kann.

In diesem Beispiel wird die DerivedPoint-Klasse von Point abgeleitet. Aus diesem Grund kann direkt von der abgeleiteten Klasse auf die geschützten Member der Basisklasse zugegriffen werden.

class Point 
{
    protected int x; 
    protected int y;
}

class DerivedPoint: Point 
{
    static void Main() 
    {
        DerivedPoint dpoint = new DerivedPoint();

        // Direct access to protected members:
        dpoint.x = 10;
        dpoint.y = 15;
        Console.WriteLine("x = {0}, y = {1}", dpoint.x, dpoint.y); 
    }
}
// Output: x = 10, y = 15

Wenn Sie die Zugriffsebenen von x und y in private ändern, gibt der Compiler folgende Fehlermeldungen aus:

'Point.y' is inaccessible due to its protection level.

'Point.x' is inaccessible due to its protection level.

C#-Programmiersprachenspezifikation

Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:

  • 3.5.1 Deklarierter Zugriff

  • 3.5.3 Geschützter Zugriff auf Instanzmember

  • 3.5.4 Zugriffsbeschränkungen

  • 10.3.5 Zugriffsmodifizierer

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

C#-Schlüsselwörter

Zugriffsmodifizierer (C#-Referenz)

Zugriffsebenen (C#-Referenz)

Modifizierer (C#-Referenz)

public (C#-Referenz)

private (C#-Referenz)

internal (C#-Referenz)

Weitere Ressourcen

C#-Referenz