abstract class A { public abstract void Foo() where T : struct; } class B : A { public delegate void Del(); public override void Foo() { Del d=delegate(){Foo();}; } public static void Main(){} }