3.939 messaggi dal 28 gennaio 2003
Ho consultato a suo tempo, dei testi che spiegano l'uso dei delegati.
Quello che manca è però un esempio reale, semplice ma che, allo stesso tempo, mostri tutta la sua potenza.
In altre parole, invece di fare:
1) spiego la "grammatica" dei delegati
2) cerco un esempio reale più o meno complesso e attinente che spieghi dove impiegarli

io cerco invece:
1) un compito semplice (per quanto possibile) non risolvibile senza delegati.
2) la "grammatica"

ps. spero di essermi spiegato.
ciao
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Pietro,
un delegato è un tipo di oggetto che mantiene il riferimento ad uno o più metodi, affinché possano essere invocati in seguito.

Sono sicuro che li avrai usati tantissime volte gestendo gli eventi dei controlli ASP.NET. Infatti, quando gestisci l'evento Click di un bottone, stai di fatto aggiungendo una tua funzione alla invocation list di un delegato. Quando l'utente clicca il bottone, ecco che verrà chiamato il metodo Invoke, che a sua volta causerà l'esecuzione di tutte le funzioni presenti nella lista.

La possibilità di eseguire del codice in maniera differita è già una caratteristica che rende i delegati molto utili, ma considera anche che un delegato è un oggetto come un altro, che quindi puoi passare come argomento ad altre funzioni.

Con LINQ l'uso dei delegati è divenuto comune grazie anche all'introduzione delle lambda expressions, che non sono altro che syntactic sugar per definire delegati anonimi. Ti sarà capitato di scrivere delle lambda come parametri dei metodi .Where, .OrderBy e .Select.
In questo specifico ambito, fornire un delegate serve ad inserire una tua logica di configurazione nelle meccaniche di funzionamento di un servizio (es. l'OrderBy ha lo scopo di ordinare degli elementi. Fornendo un delegate, gli dai i dettagli sul come deve farlo). Puoi vederla come un'attuazione alternativa dello strategy pattern.

C'è una sessione di Gian Maria Ricci che ti consiglio di guardare che mostra l'uso dei delegati e di come si arrivi fino a LINQ.
http://vimeo.com/21137165

Spero di aver risposto al tuo quesito.

ciao,
Moreno
Modificato da BrightSoul il 13 aprile 2014 15.03 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.