Delegates are type safe function pointers *with an optional this pointer* thus no need to pass one round yourself. Obviously their utility is much enhanced in contract to C++ by virtue of being part ...
A C# delegate can be bound to a 'this' pointer. A C++ function pointer can't. The utility of this should be obvious to anyone who's ever used C++ function pointers only to discover that they can't be ...