Type imbriqué

Définition - Que signifie le type imbriqué?

Le type imbriqué, en C #, est un type déclaré dans une classe ou une structure existante. Contrairement à un type non imbriqué, qui est déclaré directement dans une unité de compilation ou un espace de noms, le type imbriqué est défini dans la portée du type contenant (ou externe).

Le type imbriqué est utilisé uniquement lorsque sa portée, sa visibilité et sa durée de vie se terminent dans le type conteneur sans s'exposer à d'autres types. Le membre énumérateur dans un type de collection est généralement implémenté en tant que type imbriqué pour itérer sur la collection. En tant qu'itérateur, l'énumérateur permet d'utiliser la même logique côté client pour itérer la collection, quelle que soit la structure sous-jacente de la collection de données.

En général, le type imbriqué n'est utilisé que dans les situations où il appartient logiquement au type conteneur. Il est implémenté lorsque le type conteneur dépend entièrement du type imbriqué qui permet d'encapsuler les détails d'implémentation du type conteneur. Il est souvent utilisé dans les scénarios où le type conteneur qui a le type imbriqué pour son implémentation est directement utilisé sans aucune exigence d'instanciation de son type imbriqué.

Definir Tech explique le type imbriqué

Un type imbriqué est accessible de n'importe où dans le programme en le déclarant avec un niveau d'accessibilité public et en utilisant son nom qualifié complet.

Par exemple, AddressInformation peut être un type imbriqué déclaré dans le type Employee et accessible à l'aide de son nom complet, Employee.AddressInformation.

Le type imbriqué a les propriétés clés suivantes:

  • Il peut avoir différentes formes d'accessibilité qui incluent privé, public, protégé, protégé interne et interne. Par défaut, il a une accessibilité privée.
  • Il peut accéder aux membres privés et protégés du type conteneur, y compris tous les membres privés et protégés hérités. Pour accéder à ces membres, une instance du type conteneur doit être transmise au type imbriqué via son constructeur.
  • Il permet plusieurs niveaux d'imbrication, ce qui permet de définir le bloc de code d'une classe imbriquée dans une autre.
  • Il peut hériter du type conteneur et peut également être hérité.
  • Les membres privés du type imbriqué sont invisibles pour le type conteneur.

Le type imbriqué ne doit pas être utilisé lorsqu'il doit être exposé publiquement pour instanciation par le code client ou s'il est référencé directement dans le code client. Il ne peut pas être utilisé à la place de l'espace de noms pour les constructions de regroupement logique.