Sdílet prostřednictvím


private protected (Referenční dokumentace jazyka C#)

Kombinace private protected klíčových slov je modifikátor přístupu člena. Soukromý chráněný člen je přístupný pomocí typů odvozených z obsahující třídy, ale pouze v rámci jeho sestavení. Porovnání private protected s ostatními modifikátory přístupu najdete v tématu Úrovně přístupnosti.

Poznámka:

private protected Modifikátor přístupu je platný v jazyce C# verze 7.2 a novější.

Příklad

Soukromý chráněný člen základní třídy je přístupný z odvozených typů v jeho obsahujícím sestavení pouze v případě, že statický typ proměnné je odvozený typ třídy. Představte si například následující segment kódu:

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

Tento příklad obsahuje dva soubory Assembly1.cs a Assembly2.cs. První soubor obsahuje veřejnou základní třídu BaseClassa typ odvozený z něj, DerivedClass1. BaseClass vlastní soukromý chráněný člen , myValuekterý DerivedClass1 se pokusí o přístup dvěma způsoby. První pokus o přístup myValue prostřednictvím instance BaseClass způsobí chybu. Pokus o jeho použití jako zděděný člen však DerivedClass1 bude úspěšný.

Ve druhém souboru se pokus o přístup myValue jako zděděný člen DerivedClass2 vytvoří chybu, protože je přístupný pouze odvozenými typy v Sestavení1.

Pokud Assembly1.cs obsahuje tento název Assembly2, odvozená třída DerivedClass2 bude mít přístup k private protected členům deklarovaným v BaseClassInternalsVisibleToAttribute . InternalsVisibleTo zviditelňuje private protected členy odvozené třídy v jiných sestaveních.

Členy struktury nemohou být private protected , protože strukturu nelze zdědit.

specifikace jazyka C#

Další informace najdete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také