protected (C#-Referenz)protected (C# Reference)

Das protected-Schlüsselwort ist ein Zugriffsmodifizierer für Member.The protected keyword is a member access modifier.

Auf dieser Seite deckt protected Zugriff.This page covers protected access. Die protected -Schlüsselwort ist auch Teil der protected internal und private protected Zugriffsmodifizierer.The protected keyword is also part of the protected internal and private protected access modifiers.

Auf einen geschützten Member kann innerhalb seiner Klasse und von Instanzen abgeleiteter Klasse zugegriffen werden.A protected member is accessible within its class and by derived class instances.

Einen Vergleich von protected mit den anderen Zugriffsmodifizierern finden Sie unter Zugriffsebenen.For a comparison of protected with the other access modifiers, see Accessibility Levels.

BeispielExample

Auf einen geschützten Member einer Basisklasse kann in einer abgeleiteten Klasse zugegriffen werden, nur wenn der Zugriff über den Typ der abgeleiteten Klasse erfolgt.A protected member of a base class is accessible in a derived class only if the access occurs through the derived class type. Sehen Sie sich z.B. folgenden Codeabschnitt an:For example, consider the following code segment:

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 generiert einen Fehler, da sie innerhalb der statischen Main-Methode erstellt wird und keine Instanz der Klasse B ist.The statement a.x = 10 generates an error because it is made within the static method Main, and not an instance of class B.

Strukturmember können nicht geschützt werden, da die Struktur nicht vererbt werden kann.Struct members cannot be protected because the struct cannot be inherited.

BeispielExample

In diesem Beispiel wird die DerivedPoint-Klasse von Point abgeleitet.In this example, the class DerivedPoint is derived from Point. Daher können Sie direkt von der abgeleiteten Klasse auf die geschützten Member der Basisklasse zugreifen.Therefore, you can access the protected members of the base class directly from the derived class.

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 auf private ändern, wird der Compiler die Fehlermeldungen anzeigen:If you change the access levels of x and y to private, the compiler will issue the error messages:

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

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

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
ZugriffsmodifiziererAccess Modifiers
ZugriffsebenenAccessibility Levels
ModifiziererModifiers
publicpublic
privateprivate
internalinternal
Sicherheitsaspekte für interne virtuelle SchlüsselwörterSecurity concerns for internal virtual keywords