275.
What will be printed: using System; class Test { static void Main() { Foo("Hello"); } static void Foo(object x) { Console.WriteLine("object"); } static void Foo<T>(params T[] x) { Console.WriteLine("params T[]"); } }
View Description
The overloading tries to work out which method is "better". If it's a choice between string x and params string[] x the former will always win - but at this point it's effectively a choice between object x and params string[] x. (The fact that one is actually a generic method is only relevant in a tie-break situation.) For the purposes of working out "better conversions" the expanded form of the method with the params parameter is then used. This means that by the time actual conversions are considered, the choices are object x or string x - so clearly the latter wins.