是不是? Foo是一个完全等价于foo的foo吗?

foo as? Foo foo as? Foo完全等价foo as Foo?

如果是的话,为什么都有呢?

如果没有,那有什么区别?

as? 是安全的演员操作员 。

通常,如果您尝试转换一个变量,并且失败,则会得到一个ClassCastException 。 使用这个运算符,它只是返回null而不是在这种情况下。

这意味着foo as? Foo的返回类型foo as? Foo foo as? Foo表达实际上是Foo? ,因为它可能会返回null


foo as Foo? 是可以空的Foo?foo Foo? 类型,如果变量不是那种类型(即它不是Foo实例或null ),这仍然会产生一个异常。