メソッド引数が関数の入力時に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以外ですが、==
比較演算子がオーバーロードされているため、インスタンスが空であるため、と比較するとnullptr
trueが返されます。String
私が見る限り、これにより、String
sの関数エントリで適切なnullチェックを行うことができなくなります。本当にそうですか?