Sdílet prostřednictvím


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 jsou výchozí pro privátní; jsou přístupné pouze z jejich typu. V předchozím příkladu je třída Nested 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 třídu Nested:

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

Vnořený nebo vnitřní typ může přistupovat k obsahujícímu, tedy vnějšímu typu. Chcete-li získat přístup k obsahujícímu typu, předejte ho jako argument do konstruktoru vnořeného typu. Napří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 typu, který je obsahuje, včetně všech zděděných chráněných členů.

V předchozí deklaraci je úplný název třídy NestedContainer.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é