Because of its overloads these delegates can be use to represents a lot of different methods.
In this next sample, an bool method will be encapsulated:
Func<int,bool> IsEven = number => number %2==0;
Notice that the last type passed to generics in `Func 'delegate represents the type of value returned by the function, and the previous ones are used to represent the types of each parameter respectively.
The same occurs to the Action delegate, but at this time we have no return.
Action<double> WriteNumber = number =>Console.WriteLine(number);
The System.Linq namespace, uses a lot of this concept to create powerful high order functions, like the Tango do. In order to create high order functions to improve your code, turning it more expressive and clean.