Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
Questo contenuto viene ristampato con il permesso di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms e Pattern per Librerie .NET Riutilizzabili, 2a Edizione. Tale edizione è stata pubblicata nel 2008 e il libro è stato completamente rivisto nella terza edizione. Alcune informazioni in questa pagina potrebbero non essere aggiornate.
Un tipo annidato è un tipo definito nell'ambito di un altro tipo, denominato tipo di inclusione. Un tipo annidato ha accesso a tutti i membri del relativo tipo di inclusione. Ad esempio, ha accesso ai campi privati definiti nel tipo di inclusione e ai campi protetti definiti in tutti gli ascendenti del tipo di inclusione.
In generale, i tipi annidati devono essere usati con moderazione. Le ragioni sono molteplici. Alcuni sviluppatori non hanno familiarità con il concetto. Questi sviluppatori, ad esempio, potrebbero avere problemi con la sintassi della dichiarazione di variabili di tipi annidati. I tipi annidati sono anche molto strettamente associati ai relativi tipi di inclusione e, di conseguenza, non sono adatti per essere tipi generici.
I tipi annidati sono più adatti per modellare i dettagli di implementazione dei loro tipi contenitori. L'utente finale deve raramente dichiarare le variabili di un tipo annidato e quasi mai deve dover creare un'istanza esplicita dei tipi annidati. Ad esempio, l'enumeratore di una raccolta può essere un tipo annidato di tale raccolta. Gli enumeratori vengono in genere creati tramite un'istanza del tipo contenitore e poiché molti linguaggi supportano l'istruzione foreach, le variabili enumeratori raramente devono essere dichiarate dall'utente finale.
✔️ DO usa tipi annidati quando la relazione tra il tipo annidato e il relativo tipo esterno è tale che la semantica di accessibilità dei membri sia auspicabile.
❌ NON usare tipi annidati pubblici come costrutto di raggruppamento logico; usare i namespace per questo.
❌ Evitare i tipi annidati visibili pubblicamente. L'unica eccezione è se le variabili del tipo annidato devono essere dichiarate solo in rari scenari, ad esempio la sottoclasse o altri scenari di personalizzazione avanzata.
❌ NON usare tipi annidati se è probabile che il tipo venga fatto riferimento all'esterno del tipo contenitore.
Ad esempio, un'enumerazione passata a un metodo di una classe non dovrebbe essere definita come tipo annidato all'interno della classe.
❌ NON usare tipi annidati se è necessario crearli con istanze da codice client. Se un tipo ha un costruttore pubblico, probabilmente non dovrebbe essere innestato.
Se è possibile creare un'istanza di un tipo, che sembra indicare che il tipo ha una posizione nel framework autonomamente (è possibile crearlo, usarlo e distruggerlo senza mai usare il tipo esterno) e quindi non deve essere annidato. I tipi interni non devono essere ampiamente riutilizzati all'esterno del tipo esterno senza alcuna relazione con il tipo esterno.
❌ NON definire un tipo annidato come membro di un'interfaccia. Molti linguaggi non supportano un costrutto di questo tipo.
© Porzioni 2005, 2009 Microsoft Corporation. Tutti i diritti riservati.
Ristampato dall'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms e Patterns for Reusable .NET Libraries, 2nd Edition di Krzysztof Cwalina e Brad Abrams, pubblicato il 22 ottobre 2008 da Addison-Wesley Professional come parte della Serie di sviluppo di Microsoft Windows.