Tipi annidati
I tipi annidati sono tipi membri di altri tipi. Devono essere accoppiati precisamente ai rispettivi tipi dichiaranti e non devono essere utilizzati come tipi generici. Per alcuni sviluppatori i tipi annidati possono generare confusione e dovrebbero essere visibili pubblicamente solo in casi di assoluta necessità. In una libreria progettata correttamente è improbabile che gli sviluppatori debbano utilizzare tipi annidati per creare istanze di oggetti o dichiarare variabili.
I tipi annidati risultano utili quando il tipo dichiarante utilizza e crea istanze del tipo annidato e quando il loro utilizzo non viene esposto in membri pubblici.
Utilizzare tipi annidati quando la relazione tra il tipo annidato e il relativo tipo esterno è tale che è opportuno utilizzare una semantica di accessibilità ai membri.
Poiché viene trattato come un membro del tipo dichiarante, un tipo annidato può accedere a tutti gli altri membri inclusi nel tipo dichiarante.
Non utilizzare tipi annidati pubblici come un costrutto di raggruppamento logico. In questo caso utilizzare degli spazi dei nomi.
Evitare sempre di utilizzare tipi annidati esposti pubblicamente, tranne il caso in cui le variabili del tipo annidato devono essere dichiarate in scenari poco comuni quali la creazione di sottoclassi o altri scenari di personalizzazione avanzata.
Non utilizzare tipi annidati se verrà creato un riferimento al tipo all'esterno del tipo dichiarante.
La dichiarazione di variabili e la creazione di istanze di oggetti per tipi annidati non dovrebbe essere necessaria in scenari comuni. Ad esempio, un delegato di un gestore eventi che gestisce un evento definito in una classe non dovrebbe essere annidato nella classe.
Non utilizzare tipi annidati se è necessario che il codice client crei delle istanze di tali tipi. Se dispone di un costruttore pubblico, è probabile che il tipo non debba essere annidato.
In teoria, l'istanza di un tipo annidato viene creata e utilizzata solo dal relativo tipo dichiarante. Se un tipo annidato dispone di un costruttore pubblico, questo indicherà che il tipo può essere utilizzato per scopi diversi da quelli del relativo tipo dichiarante. In generale, un tipo annidato non dovrebbe eseguire attività per tipi diversi dal relativo tipo dichiarante. Se invece deve essere utilizzato per più scopi diversi, è probabile che il tipo non debba essere annidato.
Non definire un tipo annidato come membro di un'interfaccia poiché molti linguaggi non supportano tale costrutto.
Portions Copyright 2005 Microsoft Corporation. Tutti i diritti riservati.
Portions Copyright Addison-Wesley Corporation. Tutti i diritti riservati.
Per ulteriori informazioni sulle linee guida di progettazione, vedere “le linee guida di progettazione di Framework: Idiomi convenzioni, e modelli per libro raccolte riutilizzabili .NET„ di Krzysztof Cwalina e brad Abrams, emessi da Addison-Wesley, 2005.
Vedere anche
Concetti
Altre risorse
Linee guida di progettazione dei tipi
Linee guida di progettazione per lo sviluppo di librerie di classi