using System; class TestUnary { static void Foo (Action a) { } static void Bar () { Foo (str => ++str); } } class Program { static void Foo (Action a) { a ("action"); } static T Foo (Func f) { return f ("function"); } static string Bar () { return Foo (str => str.ToLower ()); } public static void Main () { var str = Foo (s => s); Console.WriteLine (str); Foo (s => Console.WriteLine (s)); } }