It's all about ease of use. If your delegate is only one or two statements then it's the way to go. Plus the ability to incorporate local variables makes it handy. One instance where I've used them is in a tranformation matrix control. You can translate, scale, and rotate the matrix in any order, so I just create an anonymous delegate for each step.