using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class x { public int val;} class y : x { } delegate x ChangeIt (y obj); class CoContraVariance { public static x incrA(x obj) { x tem = new x(); tem.val = obj.val + 10; return tem; } public static y incrB(y obj) { y temp = new y(); temp.val = obj.val + 1; return temp; } } class Program { static void Main(string[] args) { y yob = new y(); ChangeIt change = CoContraVariance.incrA; x xob = change(yob); Console.WriteLine("Xob:" + xob.val); change = CoContraVariance.incrB; yob = (y)change(yob); Console.WriteLine("yob:" + yob.val); yob = (y)change(yob); Console.WriteLine("yob:" + yob.val); Console.Read(); } } }