Protected Internal (Referenční dokumentace jazyka C#)

protected internalKombinace klíčového slova je modifikátor přístupu ke členu. Chráněný interní člen je přístupný z aktuálního sestavení nebo z typů, které jsou odvozeny z nadřazené třídy. Porovnání protected internal s dalšími modifikátory přístupu najdete v tématu úrovně usnadnění.

Příklad

Chráněný interní člen základní třídy je přístupný z libovolného typu v rámci jeho obsahujícího sestavení. Je také přístupný v odvozené třídě nacházející se v jiném sestavení pouze v případě, že k přístupu dojde prostřednictvím proměnné odvozeného typu třídy. Zvažte například následující segment kódu:

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

class TestAccess
{
    void Access()
    {
        var baseObject = new BaseClass();
        baseObject.myValue = 5;
    }
}
// Assembly2.cs
// Compile with: /reference:Assembly1.dll
class DerivedClass : BaseClass
{
    static void Main()
    {
        var baseObject = new BaseClass();
        var derivedObject = new DerivedClass();

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

        // OK, because this class derives from BaseClass.
        derivedObject.myValue = 10;
    }
}

Tento příklad obsahuje dva soubory, Assembly1.cs a Assembly2.cs . První soubor obsahuje veřejnou základní třídu, BaseClass a další třídu, TestAccess . BaseClass vlastní chráněný interní člen, myValue , který je k dispozici pro daný TestAccess typ. Ve druhém souboru dojde k pokusu o přístup myValue prostřednictvím instance aplikace k BaseClass chybě, zatímco přístup k tomuto členu prostřednictvím instance odvozené třídy DerivedClass bude úspěšný.

Členy struktury nemůžou být protected internal zděděné, protože strukturu nejde 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é