Sdílet prostřednictvím


Modifikátory přístupu (Průvodce programováním v C#)

Všechny typy a členy typu mají úroveň usnadnění přístupu, které řídí, zda lze použít z jiný kód vaší sestavení nebo ostatních sestaveních.Následující modifikátory přístupu lze určit usnadnění typu nebo člena při jeho deklaraci:

  • public
    Typ nebo člen je přístupná jiný kód ve stejné sestavení nebo jiném sestavení, která na ni odkazuje.

  • private
    Typ nebo člen je přístupný pouze kód ve stejné třídě nebo struktuře.

  • protected
    Typ nebo člen je přístupný pouze kód ve stejné třídě nebo struct nebo třídy, která je odvozená od třídy.

  • vnitřní
    Typ nebo člen je přístupný kód ve stejném sestavení, nikoli však z jiného sestavení.

  • protected internal
    Typ nebo člen může získat přístup libovolný kód v sestavení, v němž je deklarována nebo z odvozené třídy v jiném sestavení.Přístup z jiného sestavení musí probíhat v deklaraci třídy, který je odvozen ze třídy, v němž je deklarován chráněné vnitřní prvek a musí se provést prostřednictvím instance typu odvozené třídy.

Následující příklady ukazují, jak zadat modifikátory přístupu na typu a člen:

public class Bicycle
{
    public void Pedal() { }
}

Všechny modifikátory přístupu lze použít všechny typy nebo členy ve všech kontextech a v některých případech je omezena usnadnění člena typu usnadnění jeho nadřazeného typu.Další informace o usnadnění v následujících částech.

Třída a usnadnění Struct

Třídy a struktur, které jsou deklarovány přímo v rámci oboru názvů (v jiných slov, které nejsou vnořeny v jiné třídy nebo struktury) mohou být veřejné nebo vnitřní.Vnitřní je výchozí, pokud není zadán žádný modifikátor přístupu.

Struktura členů, včetně vnořené třídy a struktur, lze deklarovat jako veřejné, vnitřní nebo soukromé.Třída členů, včetně vnořené třídy a struktur, mohou být veřejné, chráněné vnitřní, chráněné, vnitřní nebo soukromé.Úroveň přístupu pro třídy členů a struktura, včetně vnořených tříd a struktur, je ve výchozím nastavení soukromé.Soukromé vnořené typy nejsou přístupné zvenčí nadřazeného typu.

Odvozené třídy nemohou mít větší usnadnění než jejich základní typy.Jinými slovy, nemůžete mít veřejné třídy B , je odvozen z interní třída A.Pokud byly povoleny, by mohlo mít vliv na vytváření A veřejné, protože všechny chráněné nebo interní členové A jsou v odvozené třídě.

Můžete povolit určité ostatních sestaveních přístup k vaší vnitřní typy pomocí InternalsVisibleToAttribute.Další informace naleznete v tématu Přátelská sestavení (C# and Visual Basic).

Třída a usnadnění Struct členské

S pěti typů přístupu lze deklarovat členy třídy (včetně vnořené třídy a struktur).Struktura členů nemůže být deklarována jako chráněný, protože struktur nepodporují dědičnosti.

Usnadnění člena obvykle není větší než usnadnění typu, který jej obsahuje.Ale veřejný člen vnitřní třídy může být přístupné zvenčí sestavení Pokud člen implementuje metody rozhraní nebo přepíše virtuální metody, které jsou definovány ve veřejné základní třídy.

Typ člena pole, vlastnost nebo událost musí být přístupné jako členu samotného.Podobně musí být návratový typ a typy parametrů metody, indexer nebo delegát člena přístupné jako členu samotného.Nemůžete mít například veřejná metoda M , který vrací třídu C Pokud C je také veřejné.Podobně nemůže mít chráněná vlastnost typu A -li A je deklarována jako soukromá.

Operátory definované uživatelem musí být vždy deklarován jako public.Další informace naleznete v tématu operator (Referenční dokumentace jazyka C#).

Destruktory nemůže mít modifikátory dostupnosti.

Chcete-li nastavit úroveň přístupu pro člen třídy nebo struct, přidejte odpovídající klíčové slovo deklaraci členské jak ukazuje následující příklad.

// public class: 
public class Tricycle
{
    // protected method: 
    protected void Pedal() { }

    // private field: 
    private int wheels = 3;

    // protected internal property: 
    protected internal int Wheels
    {
        get { return wheels; }
    }
}

[!POZNÁMKA]

Úroveň chráněné vnitřní dostupnost znamená protected nebo internal, nikoli protected a internal.Jinými slovy chráněný člen vnitřní lze přistupovat z libovolné třídy ve stejném sestavení, včetně odvozených tříd.Chcete-li omezit dostupnost pouze odvozené třídy ve stejném sestavení deklarovat samotné třídy vnitřní a deklarovat jeho členy jako chráněné.

Jiné typy

Deklaraci rozhraní přímo v rámci oboru názvů lze deklarovat jako veřejné nebo interní a stejně jako třídy a struktur, výchozí rozhraní vnitřní přístup.Členy rozhraní jsou veřejné vždy, protože účelem rozhraní umožňující další typy přístupu třídy nebo struct.Žádné modifikátory přístupu lze použít pro členy rozhraní.

Výčet členů jsou vždy veřejné a mohou být použity žádné modifikátory přístupu.

Delegáti chovat jako třídy a struktur.Ve výchozím nastavení mají přístup při deklaraci přímo v rámci oboru názvů a soukromý přístup při vnořené.

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é

Referenční dokumentace

Třídy a struktury (Průvodce programováním v C#)

Rozhraní (Průvodce programováním v C#)

private (Referenční dokumentace jazyka C#)

public (Referenční dokumentace jazyka C#)

internal (Referenční dokumentace jazyka C#)

protected (Referenční dokumentace jazyka C#)

class (Referenční dokumentace jazyka C#)

struct (Referenční dokumentace jazyka C#)

interface (Referenční dokumentace jazyka C#)

Koncepty

Průvodce programováním v C#