メソッド引数が関数の入力時にnullでないことを確認していますが、空の文字列のセマンティクスをnullインスタンスでオーバーロードするため、これは機能しませんPlatform::String(またはPlatform.String、C#とC ++の違いはありません)。
これを考慮してください。例外は常にスローされます。
auto emptyString = ref new Platform::String();
// Now, emptyString.IsEmpty() will be true
if (emptyString == nullptr)
{
throw ref new Platform::InvalidArgumentException();
}
変数の値はnull以外ですが、==比較演算子がオーバーロードされているため、インスタンスが空であるため、と比較するとnullptrtrueが返されます。String
私が見る限り、これにより、Stringsの関数エントリで適切なnullチェックを行うことができなくなります。本当にそうですか?