Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Este contenido se reimprime con permiso de Pearson Education, Inc. de Directrices de diseño de frameworks: Convenciones, expresiones y patrones para bibliotecas reutilizables de .NET, 2ª edición. Esa edición fue publicada en 2008, y el libro ha sido totalmente revisado en la tercera edición. Parte de la información de esta página puede estar obsoleta.
Un tipo anidado es un tipo definido dentro del ámbito de otro tipo, que se denomina tipo envolvente. Un tipo anidado tiene acceso a todos los miembros de su tipo envolvente. Por ejemplo, tiene acceso a los campos privados definidos en el tipo envolvente y a los campos protegidos definidos en todos los antecesores del tipo envolvente.
En general, los tipos anidados deben usarse con moderación. Hay varias razones para ello. Algunos desarrolladores no están totalmente familiarizados con el concepto. Estos desarrolladores pueden, por ejemplo, tener problemas con la sintaxis de declarar variables de tipos anidados. Los tipos anidados también están muy estrechamente ligados a sus tipos envolventes y, por lo tanto, no son adecuados para ser tipos de propósito general.
Los tipos anidados son más adecuados para modelar los detalles de implementación de los tipos que los contienen. El usuario final rara vez debe tener que declarar variables de un tipo anidado y casi nunca debe tener que crear instancias explícitamente de tipos anidados. Por ejemplo, el enumerador de una colección puede ser un tipo anidado de esa colección. Normalmente, los enumeradores son instanciados por el tipo que los contiene y, puesto que muchos lenguajes admiten la instrucción foreach, las variables del enumerador rara vez deben ser declaradas por el usuario.
✔️ USE tipos anidados cuando la relación entre el tipo anidado y su tipo externo sea tal que la semántica de accesibilidad de miembros sea deseable.
❌ NO utilice tipos anidados públicos como un mecanismo de agrupación lógica; use espacios de nombres para esto.
❌ EVITE los tipos anidados expuestos públicamente. La única excepción a esto es si las variables del tipo anidado solo deben declararse en escenarios poco frecuentes, como subclases u otros escenarios de personalización avanzados.
❌ NO utilice tipos anidados si es probable que se haga referencia al tipo fuera del tipo que lo contiene.
Por ejemplo, una enumeración pasada a un método definido de una clase no debe definirse como un tipo anidado en la clase.
❌ No use tipos anidados si necesitan instanciarse mediante código de cliente. Si un tipo tiene un constructor público, probablemente no se deba anidar.
Si se puede crear una instancia de un tipo, parece indicar que el tipo tiene un lugar en el marco propio (puede crearlo, trabajar con él y destruirlo sin usar nunca el tipo externo) y, por tanto, no debe anidarse. Los tipos internos no deben reutilizarse ampliamente fuera del tipo externo sin ninguna relación con el tipo externo.
❌ NO defina un tipo anidado como miembro de una interfaz. Muchos lenguajes no admiten dicha construcción.
© Partes 2005, 2009 de Microsoft Corporation. Todos los derechos reservados.
Reimpreso con permiso de Pearson Education, Inc. de Framework Design Guidelines: Convenciones, Idiomas y Patrones para Bibliotecas .NET Reusables, 2ª Edición por Krzysztof Cwalina y Brad Abrams, publicado el 22 de octubre de 2008 por Addison-Wesley Professional como parte de la Serie Desarrollo de Microsoft Windows.