正常类型转换和使用“AS”关键字有什么不同?

可能重复:
直接投射vs'as'运营商?
Casting:(NewType)与Object作为NewType

正常类型转换和使用“AS”关键字有什么区别?


如果对象是错误的类型,使用as将会优雅地失败,并且结果值将为null,而普通的强制类型会抛出InvalidCastException:

object x = new object();
string y = x as string; // y == null
string z = (string)x; // InvalidCastException

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

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

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


as铸造会在需要时抛出异常,而通常的铸造可以。

Object a = new Object();
String b = a as String;
if(b != null) // always false for this example.
{}
链接地址: http://www.djcxy.com/p/73727.html

上一篇: What is difference between normal typecasting and using “AS” keyword

下一篇: C# "as" cast vs classic cast