title: How to differ between empty Platform.String and null Platform.String^
body: <p>We're verifying that method arguments aren't null upon function entry, but this doesn't work for <code>Platform::String</code> (or <code>Platform.String</code>, no difference between C# or C++), since they overload the semantics of an empty string with a null instance.</p>
  
  <p>Consider this, where the exception will always be thrown:</p>
  
  <pre><code>auto emptyString = ref new Platform::String();
  
  // Now, emptyString.IsEmpty() will be true
  
  if (emptyString == nullptr)
  {
      throw ref new Platform::InvalidArgumentException();
  }
  </code></pre>
  
  <p>The variable has a non-null value, but the <code>==</code> comparison operator is overloaded so comparing it to <code>nullptr</code> returns true since the <code>String</code> instance is empty.</p>
  
  <p>As far as I can see this makes it impossible for us to make proper null checks at function entry for <code>String</code>s. Is that really so?</p>