Why does params behave like this?
<p><strong>Output</strong></p>

<blockquote>
  <p>1</p>
  
  <p>2</p>
  
  <p>null</p>
  
  <p>2</p>
</blockquote>

<p><strong>Code</strong></p>

<pre><code>class Program
{        
    static void Main(String[] args)
    {
        String s = null;
        PrintLength(s);
        PrintLength(s, s);
        PrintLength(null);
        PrintLength(null, null);    
        Console.ReadKey();
    }

    private static void PrintLength(params String[] items)
    {
        Console.WriteLine(items == null ? "null" : items.Length.ToString());
    }    
}
</code></pre>
