using System; using System.Collections.Generic; class C { public static int Test<T, U>(T a, IComparable<U> b) where T: IComparable<U> { return 1; } public static int Test_2<T>(IList<T> a, T b) { return 2; } public static int Main () { dynamic d = 1; if (Test (1, d) != 1) return 1; if (Test (d, 1) != 1) return 2; if (Test_2 (new int [0], d) != 2) return 3; return 0; } }