Делегаты используются для получения возможности определять вызываемый метод не при компиляции, а во время выполнения программы (динамически). То есть делегат может связываться не с одним методом, а с несколькими (экземпляры делегата могут содержать несколько ссылок на методы).
Благодаря этому, можно подсоединять к одному делегату несколько методов, каждый из которых при единственном обращении к делегату будет вызваться по цепочке. Таким образом, из программы будет виден лишь один делегат, за которым скрывается несколько методов (рисунок).