class List { public void foo (List x) { System.Console.WriteLine ("{0} - {1}", typeof (t), x.GetType ()); } } class C {} class D {} class M { public static void Main () { List x = new List (); x.foo (x); List y = new List (); y.foo (y); } }