Action
is a Delegate
. It is defined like this:
public delegate void Action();
You could create your own delegate types similarly to how you would create abstract methods; you write the signature but no implementation. You then create instances of these delegates by taking the reference of a method.
class Program
{
public static void FooMethod()
{
Console.WriteLine("Called foo");
}
static void Main()
{
Action foo = FooMethod; // foo now references FooMethod()
foo(); // outputs "Called foo"
}
}