// Generic delegates. using System; delegate Test[T] (mutable t : T) : void; class Foo[T] { public event MyEvent : Test[T]; public Hello (mutable t : T) : void { when (MyEvent != null) MyEvent (t); } } class X { static do_hello (mutable hello : string) : void { Console.WriteLine ("Hello: {0}", hello); } static Main () : void { mutable foo = Foo (); foo.MyEvent += Test (do_hello); foo.Hello ("Boston"); } } /* BEGIN-OUTPUT Hello: Boston END-OUTPUT */