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 >>
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→