Asynchronous operations need to use delegates. LINQ needs delegates. C# 3.0 allows for a more functional programming style (declarative as opposed to imperative), which requires delegates. Events are implemented as delegates. They are quite useful, but when you are first learning about them, it is not easy to see why. As you gain more experience, especially in an industry setting, it becomes much easier to see their importance and relevance.