protected (odwołanie w C#)protected (C# Reference)

Słowo kluczowe protected jest modyfikatorem dostępu składowej.The protected keyword is a member access modifier.

Ta strona obejmuje protected dostępu.This page covers protected access. Słowo kluczowe protected jest również częścią modyfikatorów dostępu protected internal i private protected .The protected keyword is also part of the protected internal and private protected access modifiers.

Chroniony element członkowski jest dostępny w jego klasie i wystąpieniach klasy pochodnej.A protected member is accessible within its class and by derived class instances.

Aby uzyskać porównanie protected z innymi modyfikatorami dostępu, zobacz poziomy dostępności.For a comparison of protected with the other access modifiers, see Accessibility Levels.

PrzykładExample

Chroniony element członkowski klasy bazowej jest dostępny w klasie pochodnej tylko wtedy, gdy dostęp odbywa się za pomocą typu klasy pochodnej.A protected member of a base class is accessible in a derived class only if the access occurs through the derived class type. Rozważmy na przykład następujący segment kodu:For example, consider the following code segment:

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;
    }
}

Instrukcja a.x = 10 generuje błąd, ponieważ znajduje się w metodzie statycznej Main i nie jest wystąpieniem klasy B.The statement a.x = 10 generates an error because it is made within the static method Main, and not an instance of class B.

Elementy członkowskie struktury nie mogą być chronione, ponieważ struktura nie może być dziedziczona.Struct members cannot be protected because the struct cannot be inherited.

PrzykładExample

W tym przykładzie Klasa DerivedPoint pochodzi od Point.In this example, the class DerivedPoint is derived from Point. W związku z tym można uzyskać dostęp do chronionych elementów członkowskich klasy bazowej bezpośrednio z klasy pochodnej.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() 
    {
        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

W przypadku zmiany poziomów dostępu x i y na prywatne, kompilator będzie wystawiał komunikaty o błędach: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.

specyfikacja języka C#C# language specification

Aby uzyskać więcej informacji, zobacz zadeklarowane ułatwienia dostępu w C# specyfikacji języka.For more information, see Declared accessibility in the C# Language Specification. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.The language specification is the definitive source for C# syntax and usage.

Zobacz takżeSee also