可能重复:
使用CLR中的'as'关键字进行转换
我最近了解了一种不同的演员方式.而不是使用
SomeClass someObject = (SomeClass) obj;
Run Code Online (Sandbox Code Playgroud)
可以使用以下语法:
SomeClass someObject = obj as SomeClass;
Run Code Online (Sandbox Code Playgroud)
如果obj不是SomeClass,它似乎返回null,而不是抛出一个类转换异常.
我看到如果转换失败并且我尝试访问someObject变量,这可能导致NullReferenceException.所以我想知道这种方法背后的理由是什么?为什么要使用这种方式而不是(旧)方式 - 它似乎只是将失败的演员问题"更深"地转移到代码中.