Tipo anidado

Definición: ¿Qué significa Tipo anidado?

El tipo anidado, en C #, es un tipo declarado dentro de una clase o estructura existente. A diferencia de un tipo no anidado, que se declara directamente dentro de una unidad de compilación o un espacio de nombres, el tipo anidado se define dentro del alcance del tipo contenedor (o externo).

El tipo anidado se usa solo donde su alcance, visibilidad y vida útil termina dentro del tipo contenedor sin exponerse a otros tipos. El miembro enumerador dentro de un tipo de colección generalmente se implementa como un tipo anidado para iterar sobre la colección. Como iterador, el enumerador permite el uso de la misma lógica del lado del cliente para iterar la colección, independientemente de la estructura subyacente de la colección de datos.

En general, el tipo anidado se usa solo en situaciones en las que lógicamente pertenece al tipo contenedor. Se implementa cuando el tipo contenedor depende por completo del tipo anidado que ayuda a encapsular los detalles de implementación del tipo contenedor. A menudo se usa en escenarios donde el tipo contenedor que tiene el tipo anidado para su implementación se usa directamente sin ningún requisito para instanciar su tipo anidado.

Techinfo explica el tipo anidado

Se puede acceder a un tipo anidado desde cualquier lugar dentro del programa declarándolo con un nivel público de accesibilidad y utilizando su nombre completo.

Por ejemplo, AddressInformation puede ser un tipo anidado declarado dentro del tipo de empleado, y se puede acceder a él utilizando su nombre completo, Employee.AddressInformation.

El tipo anidado tiene las siguientes propiedades clave:

  • Puede tener diferentes formas de accesibilidad que incluyen privado, público, protegido, protegido interno e interno. Por defecto, tiene accesibilidad privada.
  • Puede acceder a miembros privados y protegidos del tipo contenedor, incluidos los miembros privados y protegidos heredados. Para acceder a estos miembros, se debe pasar una instancia del tipo contenedor al tipo anidado a través de su constructor.
  • Permite múltiples niveles de anidamiento, lo que permite definir el bloque de código de una clase anidada dentro de otra.
  • Puede heredar del tipo contenedor y también puede heredarse.
  • Los miembros privados del tipo anidado son invisibles para el tipo contenedor.

El tipo anidado no debe usarse cuando tiene que ser expuesto públicamente para instanciación por el código del cliente o si se hace referencia directamente en el código del cliente. No se puede utilizar en lugar del espacio de nombres para construcciones de agrupación lógica.