title: Null-coalescing operator returning null for properties of dynamic objects
body: <p>I have recently found a problem with the null-coalescing operator while using Json.NET to parse JSON as dynamic objects. Suppose this is my dynamic object:</p>
  
  <pre><code>string json = "{ \"phones\": { \"personal\": null }, \"birthday\": null }";
  dynamic d = JsonConvert.DeserializeObject(json);
  </code></pre>
  
  <p>If I try to use the ?? operator on one of the field of d, it returns null:</p>
  
  <pre><code>string s = "";
  s += (d.phones.personal ?? "default");
  Console.WriteLine(s + " " + s.Length); //outputs  0
  </code></pre>
  
  <p>However, if I assign a the dynamic property to a string, then it works fine:</p>
  
  <pre><code>string ss = d.phones.personal;
  string s = "";
  s += (ss ?? "default");
  Console.WriteLine(s + " " + s.Length); //outputs default 7
  </code></pre>
  
  <p>Finally, when I output <code>Console.WriteLine(d.phones.personal == null)</code> it outputs <code>True</code>.</p>
  
  <p>I have made an extensive test of these issues on <a href="http://pastebin.com/0J27beb9">Pastebin</a>.</p>