Ben*_*thy 19

as如果对象是错误的类型,则使用将优雅地失败,并且结果值将为null,其中正常转换将抛出InvalidCastException:

object x = new object();
string y = x as string; // y == null
string z = (string)x; // InvalidCastException
Run Code Online (Sandbox Code Playgroud)


Eri*_*ert 8

两个运算符的用例表面上相似,但在语义上完全不同.演员与读者沟通"我确信这种转换是合法的,如果我错了,我愿意接受运行时异常"."as"操作员传达"我不知道这种转换是否合法;我们将试一试,看看它是怎么回事".

有关此主题的更多信息,请参阅我关于此主题的文章:

http://blogs.msdn.com/b/ericlippert/archive/2009/10/08/what-s-the-difference-between-as-and-cast-operators.aspx

  • @jasonh-以这种方式使用`as`在我看来在风格上是错误的。这会让我们想知道为什么不进行转换。同样,无效的强制转换异常将比空引用异常导致开发人员更快地解决问题。我更喜欢埃里克的风格。 (2认同)