Condividi tramite


Gestione di oggetti con insiemi

Aggiornamento: novembre 2007

Gli insiemi costituiscono il modo ideale per gestire una serie di oggetti diversi. È possibile aggiungere e rimuovere oggetti da un insieme, recuperarli in base a un indice o a una chiave e utilizzare l'Istruzione For Each...Next (Visual Basic) per scorrere gli elementi dell'insieme.

Insiemi non indipendenti dai tipi

La flessibilità propria degli insiemi, tuttavia, può minare l'affidabilità delle classi. Nell'insieme fornito da Visual Basic, ad esempio, tutti gli elementi vengono archiviati come tipo Object. Di conseguenza, è possibile aggiungere un elemento di qualsiasi tipo di dati. Non esiste alcuna misura di protezione per evitare l'aggiunta di tipi di dati non appropriati. Quando si accede a un elemento, inoltre, è necessario convertirlo da Object al tipo di dati desiderato.

Insiemi specializzati

In .NET Framework vengono fornite diverse alternative all'insieme Visual Basic. Lo spazio dei nomi System.Collections contiene le classi di insiemi con funzionalità specifiche, ad esempio una coda o un elenco ordinato, mentre lo spazio dei nomi System.Collections.Specialized contiene classi di insiemi di natura specializzata, ad esempio HybridDictionary.

Insiemi indipendenti dai tipi

Per evitare gli svantaggi legati agli elementi di tipo Object, è possibile utilizzare gli insiemi generici dello spazio dei nomi System.Collections.Generic. Tali insiemi forniscono l'indipendenza dai tipi e consentono di limitare gli elementi di un insieme a un solo tipo di dati specifico.

Approcci per l'utilizzo degli insiemi

Esistono tre approcci generali relativi all'implementazione della gestione degli oggetti mediante gli insiemi. Si consideri un'applicazione che definisce una classe widgetRepository, che organizza ed espone gli oggetti widget ai componenti client. Per implementare la classe widgetRepository con un insieme, è possibile utilizzare una delle seguenti strategie.

  • Utilizzare una classe di insiemi. Nella classe widgetRepository dichiarare una variabile widgetsColl come istanza della Classe degli insiemi di Visual Basic o di una delle classi negli spazi dei nomi System.Collections, System.Collections.Generic o System.Collections.Specialized. Rendere pubblica la variabile e utilizzare la parola chiave New (Visual Basic) per creare un'istanza dell'insieme. Per ulteriori informazioni, vedere Procedura: definire insiemi nelle classi.

  • Ereditare una classe base di insiemi. Implementare la classe widgetsColl ereditando dalla classe CollectionBase. Nella classe widgetRepository definire un'istanza della classe widgetsColl e una proprietà che restituisca tale istanza. Per ulteriori informazioni, vedere Procedura: definire insiemi nelle classi.

  • Scrivere personalmente l'insieme. Implementare la funzionalità dell'insieme nella classe widgetRepository scrivendo le classi e le routine appropriate. Questo approccio è particolarmente utile se è necessario che la classe abbia la funzionalità dell'insieme, ma non è possibile ereditare da nessuna delle classi di insiemi esistenti. Questa situazione potrebbe verificarsi, ad esempio, nel caso in cui la classe debba ereditare da una classe diversa da una classe di insiemi. Poiché non è possibile ereditare da più classi, sarà necessario definire e implementare i membri dell'insieme.

Vedere anche

Concetti

Gestione di gruppi di oggetti

Classe degli insiemi di Visual Basic

Riferimenti

System.Collections

System.Collections.Generic

System.Collections.Specialized