prywatna chroniona (C# odwołanie)private protected (C# Reference)

Kombinacja słowa kluczowego private protected jest modyfikatorem dostępu składowej.The private protected keyword combination is a member access modifier. Prywatna chroniona składowa jest dostępna dla typów pochodzących od klasy zawierającej, ale tylko w obrębie zawartego zestawu.A private protected member is accessible by types derived from the containing class, but only within its containing assembly. Aby uzyskać porównanie private protected z innymi modyfikatorami dostępu, zobacz poziomy dostępności.For a comparison of private protected with the other access modifiers, see Accessibility Levels.

Uwaga

Modyfikator dostępu private protected jest prawidłowy w C# wersji 7,2 i nowszych.The private protected access modifier is valid in C# version 7.2 and later.

PrzykładExample

Prywatna chroniona składowa klasy bazowej jest dostępna z typów pochodnych w jego zestawie zawierającym tylko wtedy, gdy typ statyczny zmiennej jest typem klasy pochodnej.A private protected member of a base class is accessible from derived types in its containing assembly only if the static type of the variable is the derived class type. Rozważmy na przykład następujący segment kodu:For example, consider the following code segment:

// Assembly1.cs  
// Compile with: /target:library  
public class BaseClass
{
    private protected int myValue = 0;
}

public class DerivedClass1 : BaseClass
{
    void Access()
    {
        var baseObject = new BaseClass();

        // Error CS1540, because myValue can only be accessed by
        // classes derived from BaseClass.
        // baseObject.myValue = 5;  

        // OK, accessed through the current derived class instance
        myValue = 5;
    }
}
// Assembly2.cs  
// Compile with: /reference:Assembly1.dll  
class DerivedClass2 : BaseClass
{
    void Access()
    {
        // Error CS0122, because myValue can only be
        // accessed by types in Assembly1
        // myValue = 10;
    }
}

Ten przykład zawiera dwa pliki, Assembly1.cs i Assembly2.cs.This example contains two files, Assembly1.cs and Assembly2.cs. Pierwszy plik zawiera publiczną klasę bazową, BaseClassi typ pochodny, DerivedClass1.The first file contains a public base class, BaseClass, and a type derived from it, DerivedClass1. BaseClass jest właścicielem prywatnej chronionej składowej, myValue, która DerivedClass1 próbuje uzyskać dostęp na dwa sposoby.BaseClass owns a private protected member, myValue, which DerivedClass1 tries to access in two ways. Pierwsza próba dostępu do myValue za pomocą wystąpienia BaseClass spowoduje wystąpienie błędu.The first attempt to access myValue through an instance of BaseClass will produce an error. Jednak próba użycia jej jako dziedziczonego elementu członkowskiego w DerivedClass1 powiedzie się.However, the attempt to use it as an inherited member in DerivedClass1 will succeed. W drugim pliku próba uzyskania dostępu do myValue jako dziedziczonego elementu członkowskiego DerivedClass2 spowoduje wystąpienie błędu, ponieważ jest on dostępny tylko dla typów pochodnych w assembly1.In the second file, an attempt to access myValue as an inherited member of DerivedClass2 will produce an error, as it is only accessible by derived types in Assembly1.

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

specyfikacja języka C#C# language specification

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#.For more information, see 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