|
 | Eventi e Delegati | Quando si parla di evento si pensa subito ai controlli inseriti in una form o in una pagina web: un Button, una DropDownList e così via. Certamente quello è l’approccio più immediato ed anche più semplice alla questione ma in realtà l’argomento è ben più complesso e presenta molteplici aspetti che coinvolgono anche la realizzazione di applicazioni multithreading. Un evento può essere legato all’azione di un utente, il click di un Button, ma può anche essere scatenato internamente ad un programma. Si instaura una sorta di comunicazione tra oggetti, c’è una sorgente (sender) che invia l’evento e c’è un ricevente che cattura l’evento e lo gestisce. Ma quale oggetto catturerà l’evento e come lo gestirà? Esiste la possibilità da parte di classi differenti di catturare lo stesso evento per gestirlo diversamente? La risposta a queste domande è strettamente connessa al concetto di delegato che è (definizione MSDN) una classe che ha una propria firma e attraverso la quale è possibile far riferimento (chiamare) a metodi (i gestori di eventi) che abbiano la stessa firma del delegato. Si tratta di una sorta di puntatore a funzioni attraverso il quale tutte le classi che vogliono gestire un determinato evento prodotto dalla classe sorgente possono effettuare una sottoscrizione alla classe sender secondo il modello publish/subscribe. Vi avevo anticipato che l’argomento non era dei più semplici ma niente paura andate alla pagina C# ed approfondite se vi va.
 | HasheTable | Ricordo che all’esame di Fondamenti di Informatica 2 all’univesità, la HashTable (linguaggio C++) era la struttura dati più temuta dagli studenti (le altre erano lista e albero) in quanto ritenuta estremamente complessa. Quando ad una prova scritta capitava la Hash era un evento (negativo ovviamente) e la notizia si diffondeva rapidamente tra gli studenti. Il commento generale era: chist so pazz (mi perdoneranno i non napoletani). Per la verità i professori consapevoli della scarsa propensione allo studio di buona parta degli studenti facevano in modo da presentare quasi sempre prove scritte sulle liste così da tagliare la testa al toro. Tra le diverse strutture dati messe a disposizione dal C# ne ho trovata una molto interessante la HashTable estramemente semplice da usare (ne è passata di acqua sotto i ponti) e che consente di velocizzare le ricerche grazie ad una particolare gestione della memoria. Se vi interessa avere qualche informazione in merito andate alla pagina C#
|