Udostępnij za pośrednictwem


Typy zagnieżdżone (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, czy strukturą, zagnieżdżone typy są domyślnie prywatne; są one dostępne tylko z wnętrza swojego typu zawierającego. W poprzednim przykładzie klasa Nested 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 Nested jest publiczna:

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, który zawiera, przekaż go jako argument do konstruktora typu zagnieżdżonego. 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 członków, które są dostępne dla typu, w którym jest zawarty. 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 Nested klasy 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 także