Action and Func specifically do not take out or ref parameters. However, they are just delegates.
You can make a custom delegate type that does take an out parameter, and use it, though.
For example, the following works:
class Program
{
static void OutFunc(out int a, out int b) { a = b = 0; }
public delegate void OutAction<T1,T2>(out T1 a, out T2 b);
static void Main(string[] args)
{
OutAction<int, int> action = OutFunc;
int a = 3, b = 5;
Console.WriteLine("{0}/{1}",a,b);
action(out a, out b);
Console.WriteLine("{0}/{1}", a, b);
Console.ReadKey();
}
}
This prints out:
3/5
0/0