title: MemoryCache Contains() thread-safety
body: <p><code>MemoryCache</code> is a thread-safe class, according to <a href="http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx" rel="nofollow">this</a> article. But I don't understand how it will behave in a specific situation. For example I have the code:  </p>
  
  <pre><code>static private MemoryCache _cache = MemoryCache.Default;
  
  ...
  
  if (_cache.Contains("Test"))
  {
      return _cache.Get("Test") as string;
  }
  </code></pre>
  
  <ol>
  <li>Can element's living time expire just after I call <code>Contains()</code> so <code>null</code> value will be returned?  </li>
  <li>Can another thread remove item just after I call <code>Contains()</code> so <code>null</code> value will be returned?  </li>
  </ol>