title: params keyword taking an array as a single parameter interprets the contents of the array as all its parameters
body: <p>I have written a simple program using the <code>params</code> keyword to take parameters and write them to the console.  What I want/expect to happen, and what the <a href="https://msdn.microsoft.com/en-us/library/w5zay9db.aspx" rel="nofollow">C# documentation states</a> will happen when I pass a single array to the parameter with the <code>params</code> tag is that the array will become the first element in the <code>params</code> array.  Here is some sample code:</p>
  
  <pre><code>    public static void Main()
      {
          Paramtest(new object[] { "hi", "wow", 78 });
          Console.ReadKey();
      }
  
      public static void Paramtest(params object[] args) {
          foreach (object o in args) {
              Console.WriteLine("{0} is a type of {1}.", o.ToString(), o.GetType());
          }
      }
  </code></pre>
  
  <p>What I <strong>should</strong> see is one line of writing on the console that states:</p>
  
  <pre><code>System.object[] is a type of System.object[].
  </code></pre>
  
  <p>What I <strong>do</strong> see is three lines of writing:</p>
  
  <pre><code>hi is a type of System.String.
  wow is a type of System.String.
  78 is a type of System.Int32.
  </code></pre>
  
  <p>I've discovered that calling <code>Paramtest</code> with another parameter after the array, like this: <code>Paramtest(new object[] { "hi", "wow", 78 }, String.Empty);</code>, produces the intended results (plus the empty string), so that might be one way to work around this problem, however it isn't elegant or a good idea in my case.  From what the documentation says, this shouldn't be happening.  Is there any  <strong>elegant</strong> workaround for this problem?</p>