What is a C# delegate? From MSDN Tutorial:
A delegate in C# is similar to a function pointer in C or C++. Using a delegate allows the programmer to encapsulate a reference to a method inside a delegate object.
It is .CLR historic support for first-class functions. I.e. ability to use functions to be passed around just like any other value. From .NET 3.5 Func<> was added to the C# for this purpose.
Java can simulate this via anonymous inner classes.
Scala has almost excellent first-class functions support:
val f = (x:Int) => x + 1
Groovy has first-class functions:
square = { it * it }
To be fair on the CLR delegates will work a bit faster than methods for JVM listed above.
This is because JVM itself lacks support for a first-class functions and the only way to bring them back is to emulate this functionality.
Why Microsoft has accepted it, but others not ?
That's how historically things unrolled.
So should not it be useful ?
First-class functions are extremely useful in the functional programming.