Zagnieżdżone typy (Przewodnik programowania w języku C#)

Typ zdefiniowany w klasie, struktury lub interfejsie jest nazywany typem zagnieżdżonym. Na przykład

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

Niezależnie od tego, czy typ zewnętrzny jest klasą, interfejsem lub strukturą, typy zagnieżdżone są domyślnie prywatne; są dostępne tylko z ich typu zawierającego. W poprzednim przykładzie Nested klasa jest niedostępna dla typów zewnętrznych.

Można również określić modyfikator dostępu, aby zdefiniować dostępność typu zagnieżdżonego w następujący sposób:

W poniższym przykładzie klasa jest publiczna Nested :

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

Typ zagnieżdżony lub wewnętrzny może uzyskać dostęp do typu zawierającego lub zewnętrznego. Aby uzyskać dostęp do typu zawierającego, przekaż go jako argument do konstruktora typu zagnieżdżonego. Na przykład:

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

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

Typ zagnieżdżony ma dostęp do wszystkich elementów członkowskich, które są dostępne dla jego typu zawierającego. Może ona uzyskiwać dostęp do prywatnych i chronionych elementów członkowskich typu zawierającego, w tym do wszystkich dziedziczynych chronionych elementów członkowskich.

W poprzedniej deklaracji pełna nazwa klasy Nested to Container.Nested. Jest to nazwa użyta do utworzenia nowego wystąpienia zagnieżdżonej klasy w następujący sposób:

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

Zobacz też