Insiemi come alternativa alle matrici
Aggiornamento: novembre 2007
Sebbene vengano in genere utilizzati con il Tipo di dati Object, gli insiemi possono essere utilizzati con qualsiasi tipo di dati. In alcuni casi può risultare più efficace archiviare elementi in un insieme anziché in una matrice.
Se occorre modificare la dimensione di una matrice, è necessario utilizzare l'Istruzione ReDim (Visual Basic). In questo caso, Visual Basic crea una nuova matrice e rilascia quella precedente per consentirne l'eliminazione. Questa operazione causa un aumento del tempo di esecuzione. Di conseguenza, se il numero degli elementi utilizzati cambia spesso, oppure non è possibile prevedere il numero massimo di elementi necessari, è preferibile utilizzare un insieme per ottenere prestazioni migliori.
Il ridimensionamento di un insieme, per il quale non è necessario creare un nuovo oggetto né copiare elementi esistenti, richiede un tempo di esecuzione inferiore rispetto a quello di una matrice, per la quale è necessario utilizzare l'istruzione ReDim. Tuttavia, se la dimensione della matrice rimane invariata o cambia solo raramente, è probabile che l'utilizzo di una matrice garantisca prestazioni migliori. Come sempre, le prestazioni dipendono principalmente dalla specifica applicazione. È quindi consigliabile effettuare alcune prove utilizzando sia una matrice che un insieme.
Insiemi specializzati
In .NET Framework sono inoltre disponibili diverse classi, interfacce e strutture per insiemi generali e specializzati. Gli spazi dei nomi System.Collections e System.Collections.Specialized contengono definizioni e implementazioni che includono dizionari, elenchi, code e stack. Lo spazio dei nomi System.Collections.Generic fornisce molte di esse in versioni generiche, che accettano uno o più argomenti di tipo.
Se l'insieme deve contenere elementi appartenenti a un unico tipo di dati, un insieme generico offre il vantaggio di imporre l'indipendenza dai tipi. Per ulteriori informazioni sui tipi generici, vedere Tipi generici in Visual Basic.
Esempio
Descrizione
Nell'esempio riportato di seguito viene utilizzata la classe generica System.Collections.Generic.List<T> di .NET Framework per creare un insieme List di strutture customer.
Codice
' Define the structure for a customer.
Public Structure customer
Public name As String
' Insert code for other members of customer structure.
End Structure
' Create a module-level collection that can hold 200 elements.
Public custFile As New List(Of customer)(200)
' Add a specified customer to the collection.
Private Sub addNewCustomer(ByVal newCust As customer)
' Insert code to perform validity check on newCust.
custFile.Add(newCust)
End Sub
' Display the list of customers in the Debug window.
Private Sub printCustomers()
For Each cust As customer In custFile
Debug.WriteLine(cust)
Next cust
End Sub
Commenti
La dichiarazione dell'insieme custFile specifica che l'insieme può contenere soltanto elementi di tipo customer e definisce inoltre una capacità iniziale di 200 elementi. La routine addNewCustomer controlla la validità del nuovo elemento e quindi lo aggiunge all'insieme. La routine printCustomers utilizza un ciclo For Each per attraversare l'insieme e visualizzarne gli elementi.
Vedere anche
Attività
Procedura: dichiarare una variabile di matrice
Procedura: inizializzare una variabile di matrice
Risoluzione dei problemi relativi alle matrici
Concetti
Riferimenti
Istruzione ReDim (Visual Basic)