I first saw this on Ayende's blog (in a rather more obscure form, admittedly). Once again, work out what will be printed, and why. 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[]" ); } } Answer: params T[] is printed. Now why would the compiler choose to create an array when it doesn't have to? Well... there are two stages to this. Firstly, ...
(Helping you out with C#, ASP.NET, SQL, Microsoft Azure, MVC & Javascript)