What is Func<> and what is it used for?
Func<>
It is just a predefined generic delegate. Using it you don't need to declare every delegate. There is another predefined delegate, Action, which is the same but returns void.
Action