Verschachtelter Typ

Definition - Was bedeutet verschachtelter Typ?

Der verschachtelte Typ in C # ist ein Typ, der in einer vorhandenen Klasse oder Struktur deklariert ist. Im Gegensatz zu einem nicht verschachtelten Typ, der direkt in einer Kompilierungseinheit oder einem Namespace deklariert wird, wird der verschachtelte Typ im Bereich des enthaltenden (oder äußeren) Typs definiert.

Verschachtelter Typ wird nur verwendet, wenn Umfang, Sichtbarkeit und Lebensdauer innerhalb des enthaltenen Typs enden, ohne sich anderen Typen auszusetzen. Das Enumerator-Mitglied innerhalb eines Sammlungstyps wird normalerweise als verschachtelter Typ implementiert, um die Sammlung zu durchlaufen. Als Iterator ermöglicht der Enumerator die Verwendung derselben clientseitigen Logik zum Iterieren der Sammlung, unabhängig von der zugrunde liegenden Struktur der Datenerfassung.

Im Allgemeinen wird der verschachtelte Typ nur in Situationen verwendet, in denen er logischerweise zum enthaltenen Typ gehört. Es wird implementiert, wenn der enthaltende Typ vollständig vom verschachtelten Typ abhängig ist, mit dessen Hilfe die Implementierungsdetails des enthaltenen Typs gekapselt werden können. Es wird häufig in Szenarien verwendet, in denen der enthaltende Typ, für dessen Implementierung der verschachtelte Typ vorhanden ist, direkt verwendet wird, ohne dass der verschachtelte Typ instanziiert werden muss.

Technische.me erklärt den verschachtelten Typ

Auf einen verschachtelten Typ kann von überall im Programm zugegriffen werden, indem er für öffentlich zugänglich erklärt und sein vollständig qualifizierter Name verwendet wird.

Beispielsweise kann AddressInformation ein verschachtelter Typ sein, der innerhalb des Mitarbeitertyps deklariert ist, und auf den unter seinem vollständig qualifizierten Namen Employee.AddressInformation zugegriffen werden kann.

Der verschachtelte Typ hat die folgenden Schlüsseleigenschaften:

  • Es kann verschiedene Formen der Barrierefreiheit haben, darunter private, öffentliche, geschützte, geschützte interne und interne. Standardmäßig ist es privat zugänglich.
  • Es kann auf private und geschützte Mitglieder des enthaltenen Typs zugreifen, einschließlich aller geerbten privaten und geschützten Mitglieder. Um auf diese Mitglieder zugreifen zu können, muss eine Instanz des enthaltenen Typs über ihren Konstruktor an den verschachtelten Typ übergeben werden.
  • Es ermöglicht mehrere Verschachtelungsebenen, wodurch der Codeblock einer verschachtelten Klasse in einer anderen definiert werden kann.
  • Es kann vom enthaltenden Typ erben und kann auch geerbt werden.
  • Private Mitglieder des verschachtelten Typs sind für den enthaltenden Typ unsichtbar.

Verschachtelter Typ sollte nicht verwendet werden, wenn er für die Instanziierung durch den Clientcode öffentlich verfügbar gemacht werden muss oder wenn er direkt im Clientcode referenziert wird. Es kann nicht anstelle des Namespace für logische Gruppierungskonstrukte verwendet werden.