我们正在验证方法参数在函数输入时不为空,但这不适用于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();
}
该变量具有非空值,但==
比较运算符已重载,因此将其与nullptr
返回 true 进行比较,因为String
实例为空。
据我所知,这使我们无法在String
s 的函数入口处进行正确的空检查。真的是这样吗?