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 je vnější typ třída, rozhraní nebo struktura, jsou vnořené typy standardně soukromé; jsou přístupné pouze z typu obsahujícího. V předchozím příkladu Nested je třída nepřístupná pro externí typy.

Můžete také zadat modifikátor přístupu pro definování přístupnosti vnořeného typu následujícím způsobem:

Následující příklad zpřístupňuje Nested třídu jako veřejnou:

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

Vnořený nebo vnitřní typ má přístup k typu obsahující nebo vnější. Pokud chcete získat přístup k typu obsahujícího, 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 daný 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 následujícím způsobem:

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

Viz také