using System; public delegate B Test (A a); public class Foo { T t; public Foo (T t) { this.t = t; } public U Method (Test test) { return test (t); } } class X { public static void Main () { Test test = new Test (Math.Sign); Foo foo = new Foo (Math.PI); Console.WriteLine (foo.Method (test)); string s = foo.Method (delegate (double d) { return "s" + d; }); Console.WriteLine (s); } }