So I read MSDN and Stack Overflow. I understand what the Action Delegate does in general but it is not clicking no matter how many examples I do. In general, the same goes f
Simply? Function pointers
.NET Delegates: A Bedtime Story
It's just an updated version of C's function pointers with the possibility of it being tied to an object instance if it's a non-static object method pointer (C++ called them method pointers when they added objects and function pointers together).
The type signature can be made generic using C#'s generic's features.
All the generics stuff is just templatizing the signature.
The name delegate is poorly chosen (unless you think of all of our apps being driven by frameworks). Because the use is not always "to delegate". Often times it's the code you have delegated some responsibility to (an iterator, say) which calls the "delegate" you previously sent in. Which is why you often see the term callback.
Callbacks have traditionally been used in frameworks for your application code to be called in the middle of a loop or when a particular event happens. It allows you to get your code to happen in the middle of other code - in fact, it's just about the only way within a thread.
Obviously, .NET event handlers are delegates being called by the framework at appropriate times, and you can accept delegates in your functions and call them appropriate to allow you to make your code somewhat generic/reusable/organized.