可能重复:
Direct casting vs 'as' operator?
Casting vs using the 'as' keyword in the CLR
object myObject = "Hello world.";
var myString = myObject as string;
object myObject = "Hello world.";
var myString = (string)myObject;
我已经看到了两种方式都进行了类型转换。有什么区别?
答案 0 :(得分:6)
“as”会在结果失败时将结果设置为null
。
显式强制转换会在失败时抛出异常。
答案 1 :(得分:3)
var myString = myObject as string;
它仅检查myobject
的运行时类型。如果是string
,则只会转换为string
,否则只返回null
。
var myString = (string)myObject;
此还查找从源类型转换为字符串的implicit
。如果运行时类型都不是string
,也没有implicit
转换,那么它会抛出异常。
阅读第3项:比较来自Bill Wagner的有效C#中的is
或as
运算符。
答案 2 :(得分:1)
如果无法将对象强制转换为目标类型,则强制转换将抛出异常。 as
只会返回null
。