Sdílet prostřednictvím


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

Vnořený typ je typ, který definujete v rámci třídy, struktury nebo rozhraní. Například:

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

Bez ohledu na to, zda je vnější typ třída, rozhraní nebo struktura, vnořené typy jsou standardně privátní. Můžete k nim přistupovat pouze z typu, který je obsahuje. V předchozím příkladu externí typy nemají přístup ke Nested třídě.

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é