是不是? 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
),这仍然会产生一个异常。