Зачем нужны делегаты в C#?
Мы используем делегаты для реализации событийной модели. В коде генерируется событие, на которое подписываются различные обработчики: логгеры, мониторы производительности, контроллеры и т.п. Собственно, обработчики событий — это методы, вызываемые с помощью делегатов. В результате код остаётся чистым и понятным, а функциональность обработчиков - конфигурируемой и расширяемой.
Дмитрий Ковальский прав, с предыдущего вопроса не прошло и недели.
Если того что там есть вам мало, зайдем с практической стороны. Вы пишете для меня библиотеку и я прошу вас сделать мне функцию обхода графа по ПВШ/ПВГ, которая будет вызывать для каждой вершины некоторое действие (заранее неизвестное). Я хочу чтобы сделали именно обход, а что делать с каждой вершиной я хочу решать сам во время использования. В идеале, хотелось бы передавать вам это "действие" для каждой вершины как параметр в функцию обхода. Как вы решите эту задачу?