public delegate void Action<[in T1][,in T2][,in T3]......>([T1 t1][,T2 t2][,T3 t3]...)
public delegate TResult Func<in T,out TResult>(T t)
public delegate void Action<[in T1][,in T2][,in T3]......>([T1 t1][,T2 t2][,T3 t3]...)
public delegate TResult Func<in T,out TResult>(T t)