在我看来,is操作员有点不一致。
bool Test()
{
// Returns false, but should return true.
return null is string;
}
人们期望该null值属于任何引用(或可为空)类型。确实,C#语言规范说了一些支持此假设的内容,例如(6.1.6隐式引用转换):
隐式引用转换为:
...
•从null文字到任何引用类型。
对运算符的描述(7.10.10是is运算符)is首先说,(E is T)当存在从Eto 的引用转换时,表达式将为true T,但随后作者继续明确排除when E是null文字或具有null值的情况。 。
他们为什么这样做?在我看来,这违反直觉。
null typeof Object也返回false
null is string是true,这意味着这null是一个string。还假设null is Nullable<int>是true,这意味着null是Nullable<int>。现在,回答这个问题:什么是类型null?