Vnořené typy (Průvodce programováním v C#)

Typ definovaný v rámci třídy, struktury nebo rozhraní se nazývá vnořený typ. Například

public class Container
{
    class Nested
    {
        Nested() { }
    }
}

Bez ohledu na to, zda vnější typ je třída, rozhraní nebo struktura, vnořené typy výchozí privátní; jsou přístupné pouze z typu, který obsahuje. V předchozím příkladu Nested je třída nepřístupná pro externí typy.

Můžete také zadat modifikátor přístupu , který definuje přístupnost vnořeného typu, a to následujícím způsobem:

Následující příklad nastaví třídu jako Nested veřejnou:

public class Container
{
    public class Nested
    {
        Nested() { }
    }
}

Vnořený nebo vnitřní typ má přístup k obsahujícímu nebo vnějšímu typu. Chcete-li získat přístup k obsahujícímu typu, předejte ho jako argument konstruktoru vnořeného typu. Příklad:

public class Container
{
    public class Nested
    {
        private Container parent;

        public Nested()
        {
        }
        public Nested(Container parent)
        {
            this.parent = parent;
        }
    }
}

Vnořený typ má přístup ke všem členům, které jsou přístupné pro jeho obsahující typ. Má přístup k soukromým a chráněným členům obsahujícího typu, včetně všech zděděných chráněných členů.

V předchozí deklaraci je Container.Nestedúplný název třídy Nested . Toto je název použitý k vytvoření nové instance vnořené třídy, a to následujícím způsobem:

Container.Nested nest = new Container.Nested();

Viz také