I delegati forniscono un modo per passare il comportamento come parametro.
Gli esempi comuni sono Eventi e programmazione asincrona in cui qualcosa di diverso dal proprio oggetto è responsabile della chiamata nel proprio oggetto. Fornisci quell'evento a un delegato e ora è in grado di eseguire il comportamento associato a tale delegato.
Questa può anche essere una tecnica utile quando si implementa un algoritmo generale. Ci sono state volte in cui sto scrivendo più metodi che sono molto simili. Forse si collegano lo stesso insieme di dati, ma eseguono compiti leggermente diversi. Posso passare un delegato a una singola funzione per eseguire quell'attività, quindi chiamare il delegato dall'interno del ciclo sui dati. In questo modo non devo implementare il loop sui dati più volte, devo solo scrivere un nuovo codice che faccia cose nuove - il comportamento comune è tutto catturato in un modo comune.
In risposta al commento:
La differenza tra chiamare il delegato all'interno del loop e chiamando il metodo all'interno del loop è che il delegato è un parametro per la funzione che contiene il ciclo. Ciò significa che quella funzione potrebbe fare qualsiasi cosa, non solo ciò che è definito all'interno di un particolare metodo.Questa flessibilità può essere sfruttata e utilizzata per fornire algoritmi generici nelle librerie completamente indipendenti dalle specifiche di ciò su cui gli algoritmi stanno lavorando. Linq è un ottimo esempio della generalità consentita dalla flessibilità dei delegati.
fonte
2009-08-18 17:35:47
Ci sono molte domande simili, come questa: http://stackoverflow.com/questions/31497/where-do-i-use-delegates –
Oppure questo: http://stackoverflow.com/questions/628803/delegate-usage-business-applications –
Oppure questo: http://stackoverflow.com/questions/635015/when-would-i-use-a-delegate-in-asp-net –