In C# 1. You don't have delegate sorting or comparison options. You might be forced to do it by creating another type which implements IComparer to sort your collections in ArrayList. But starting from c# 2. You can use delegates for your comparisons. Look the following example.
List<Product> products = Product.GetSampleProducts();
products.sort(delegate(Product p1, Product p2) {return p1.Name.CompareTo(p2.Name);});
I can see
1) how the delegate (Anonymous Method) makes life easy
2) how the code becomes readable and how it helped me do the Comparison with out creating another type.
My question is - What if we want to use this comparison in Multiple areas in my application? don't you think this will force me to write the same "Anonymous Method" again and again? Don't you think this is against the OOP of re-usability?