using System; public delegate TResult Func (TArg0 arg0); class Demo { static Z F(int a, X value, Func f1, Func f2) { return f2(f1(value)); } static void Main () { double seconds = F(1, "1:15:30", s => TimeSpan.Parse(s), t => t.TotalSeconds); } }