Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein typ, der in einer Klasse, Struktur oder Schnittstelle definiert ist, wird als geschachtelter Typ bezeichnet. Beispiel:
public class Container
{
class Nested
{
Nested() { }
}
}
Unabhängig davon, ob der äußere Typ eine Klasse, Schnittstelle oder Struktur ist, sind geschachtelte Typen standardmäßig privat; auf sie kann nur über ihren enthaltenden Typ zugegriffen werden. Im vorherigen Beispiel kann auf die Nested
Klasse nicht auf externe Typen zugegriffen werden.
Sie können auch einen Zugriffsmodifizierer angeben, um die Barrierefreiheit eines geschachtelten Typs wie folgt zu definieren:
Geschachtelte Typen einer Klasse können öffentlich, geschützt, intern,intern, privat oder privat geschützt sein.
Wenn Sie jedoch eine
protected
oderprotected internal
private protected
eine geschachtelte Klasse innerhalb einer versiegelten Klasse definieren, wird die Compilerwarnung CS0628 generiert, "neues geschütztes Element, das in der versiegelten Klasse deklariert ist".Beachten Sie außerdem, dass ein geschachtelter Typ extern sichtbar ist, gegen die Codequalitätsregel CA1034 verstößt: "Geschachtelte Typen sollten nicht sichtbar sein".
Geschachtelte Typen einer Struktur können öffentlich, intern oder privat sein.
Im folgenden Beispiel wird die Nested
Klasse öffentlich:
public 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 als Argument an den Konstruktor des geschachtelten Typs. Beispiel:
public class Container
{
public class Nested
{
private Container? parent;
public Nested()
{
}
public Nested(Container parent)
{
this.parent = parent;
}
}
}
Ein geschachtelter Typ hat Zugriff auf alle Elemente, auf die der enthaltende Typ zugreifen kann. Er kann auf private und geschützte Member des enthaltenden Typs zugreifen, einschließlich aller geerbten geschützten Member.
In der vorherigen Deklaration ist der vollständige Name der Klasse Nested
Container.Nested
. Dies ist der Name, der zum Erstellen einer neuen Instanz der geschachtelten Klasse wie folgt verwendet wird:
Container.Nested nest = new Container.Nested();