title: What is the proper way to check for null values?
body: <p>I love the null-coalescing operator because it makes it easy to assign a default value for nullable types.</p>
  
  <pre><code> int y = x ?? -1;
  </code></pre>
  
  <p>That's great, except if I need to do something simple with <code>x</code>. For instance, if I want to check <code>Session</code>, then I usually end up having to write something more verbose.</p>
  
  <p>I wish I could do this:</p>
  
  <pre><code>string y = Session["key"].ToString() ?? "none";
  </code></pre>
  
  <p>But you can't because the <code>.ToString()</code> gets called before the null check so it fails if <code>Session["key"]</code> is null. I end up doing this:</p>
  
  <pre><code>string y = Session["key"] == null ? "none" : Session["key"].ToString();
  </code></pre>
  
  <p>It works and is better, in my opinion, than the three-line alternative:</p>
  
  <pre><code>string y = "none";
  if (Session["key"] != null)
      y = Session["key"].ToString();
  </code></pre>
  
  <p>Even though that works I am still curious if there is a better way. It seems no matter what I always have to reference <code>Session["key"]</code> twice; once for the check, and again for the assignment. Any ideas?</p>