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

Typ zdefiniowany w ramach klasy lub struktury nosi nazwę typu zagnieżdżonego.Na przykład:

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

Bez względu na to, czy zewnętrzny typ jest klasą czy strukturą, zagnieżdżone typy domyślnie są prywatne, ale mogą być publiczne, chronione wewnętrznie, chronione, wewnętrzne lub prywatne.W poprzednim przykładzie Nested jest niedostępne dla typów zewnętrznych, ale mogą być ujawniane podobne do tego:

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

Typy zagnieżdżony lub wewnętrzny mogą uzyskiwać dostęp do typu zawierającego lub zewnętrznego.Aby uzyskać dostęp zgodny z zawartym typem, przekaż go jako konstruktor do 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;
        }
    }
}

Zagnieżdżony typ ma dostęp do wszystkich elementów członkowskich, które są dostępne dla zawierającego ją typu.Będzie miał dostęp do prywatnych i chronionych członków typu zawierającego, włączając wszelkie elementy chronione dziedziczone.

W poprzedniej deklaracji pełną nazwą klasy Nested jest Container.Nested.Jest to nazwa używana do tworzenia nowego wystąpienia klasy zagnieżdżonej, w następujący sposób:

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

Zobacz też

Informacje

Klasy i struktury (Przewodnik programowania w języku C#)

Modyfikatory dostępu (Przewodnik programowania w języku C#)

Konstruktorzy (Przewodnik programowania w języku C#)

Koncepcje

Przewodnik programowania w języku C#