// Important test: Type inference class Test<A,B> { public void Foo<U> (U u) { } public void Foo<V> (V[] v, V w) { } public void Hello<V,W> (V v, W w, Test<V,W> x) { } public void ArrayMethod<V> (params V[] args) { } } class X { public static void Main () { Test<float,int> test = new Test<float,int> (); test.Foo ("Hello World"); test.Foo (new long[] { 3, 4, 5 }, 9L); test.Hello (3.14F, 9, test); test.ArrayMethod (3.14F, (float) 9 / 3); } }