Geschachtelte Typen (C#-Programmierhandbuch)

Ein innerhalb einer Klasse oder Struktur definierter Typ wird als geschachtelter Typ bezeichnet. Beispiel:

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

Unabhängig davon, ob die externen Typen eine Klasse oder Struktur sind, werden geschachtelte Typen standardmäßig auf private festgelegt, können jedoch auch auf public, protected internal, protected, internal oder private festgelegt werden. Im vorherigen Beispiel ist Nested für externe Typen nicht zugreifbar, kann aber wie folgt öffentlich gemacht werden:

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

Der geschachtelte oder innere Typ kann auf den enthaltenden oder äußeren Typ zugreifen. Um auf den enthaltenden Typ zuzugreifen, übergeben Sie ihn dem geschachtelten Typ als Konstruktor. Beispiel:

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

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

Geschachtelte Typen können auf die Member des enthaltenden Typs zugreifen, die private oder protected sind. Dies beinhaltet auch alle geerbten Member, die private oder protected sind.

In der vorherigen Deklaration lautet der vollständige Name der Nested-Klasse Container.Nested. Mit diesem Namen wird wie folgt eine neue Instanz der geschachtelten Klasse erstellt:

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

Siehe auch

Referenz

Klassen und Strukturen (C#-Programmierhandbuch)

Zugriffsmodifizierer (C#-Programmierhandbuch)

Konstruktoren (C#-Programmierhandbuch)

Konzepte

C#-Programmierhandbuch