Sebbene le strutture dati presenti nel framework .NET siano in grado di soddisfare i requisiti dei programmi in C#, si potrebbero però voler creare delle strutture dati personalizzate. Il framework .NET per questo motivo mette a disposizione delle comode interfacce che una volta implementate in una propria classe, permettono di utilizzare quest’ultima come una struttura dati standard. Un’interfaccia importante è IList che è implementata dalle classi che abbiamo visto nelle scorse lezioni e che è definita da queste proprietà:
i metodi previsti sono invece i seguenti:
L’interfaccia IEnumerable definisce invece il solo metodo GetEnumerator(). Nelle strutture dati è utilizzata anche un’altra interfaccia, ICollection, che è una sottointerfaccia di IEnumerable e che definisce in più le proprietà Count, IsSyncronized, SyncRoot ed il metodo CopyTo(). IDictionary è una sottointerfaccia di ICollection ed IEnumerable che definisce strutture dati che associano ad un valore una chiave, come nel caso delle HashTable. In particolare IDictionary, in aggiunta alle proprietà ereditate ne definisce altre:
i metodi definiti sono invece:
Il framework .NET agevola la creazione di nuove strutture dati, offrendo la classe CollectionBase, che fornisce una implementazione di base ed astratta di una struttura dati tipizzata, formata cioè da dati a grandezza fissa e non generici, come abbiamo visto finora.
Terminiamo questa lezione, forzatamente teorica, parlando degli iteratori. Lo scorrimento di elementi di una struttura dati avviene tramite un enumeratore, in pratica un oggetto che implementa l’interfaccia IEnumerable. In C# c’è una nuova parola chiave “yield“, che serve proprio per specificare gli elementi che dovrà ritornare un enumeratore, vediamone un esempio concreto:
using System; using System.Collections; public class Corso { public static IEnumerable Animali() { yield return "Elefante"; yield return "Leone"; yield return "Cammello"; yield return "Cane"; yield return "Gatto"; } static void Main(string[] args) { foreach (string s in Animali()) Console.WriteLine(s); Console.ReadKey(); } }
Ricordo sempre che un bravo programmatore quando non ricorda qualcosa, sa comunque dove andare a guardare e vi esorto a fare questo tipo di esercizio, create nuovo esempi e compilateli, se ci fossero degli errori osservate bene e poi cercate in Internet quello che non vi è chiaro.
<< Lezione Precedente – Inizio Corso – Indice Lezioni – Lezione Successiva >>
MerciGest è il software gestionale gratuito per Windows che semplifica la gestione del magazzino: giacenze,…
Tutti i nostri software gestionali possono essere collegati a un database SQL Server, consentendo l’accesso…
MerciGest è semplice e immediato: basta scaricare e installare il programma per iniziare subito. Al…
MerciGest è un gestionale di magazzino per Windows pensato per negozi, piccole imprese e artigiani…
La Standard Template Library (STL) è una delle componenti più potenti del C++. Fornisce una…
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…