struct A { public A (int a) { } } class B { public B (int a) { } } class X { static void Foo (out A value) { value = new A (1); } static void Foo (out object value) { value = new B (1); } public static int Main () { A o; Foo (out o); object b; Foo (out b); return 0; } }