之间有什么区别
string url =(string)数据 和 string url = data as string;
哪种方式更好?
答案 0 :(得分:6)
如果转换失败,第一个构造将抛出InvalidCastException
,而如果as
变量不是字符串,则data
运算符将返回null。
哪种方式更好?
这取决于你想要达到的目标。
答案 1 :(得分:3)
将as
视为尝试,将对象强制转换为特定类型。如果失败,结果变量将保留null
。另一方面,直接投射是1 way ticket
投射,如果失败则会抛出异常。
基本上,当对象可以转换为特定类型时,它们会执行完全相同的操作,但是如果转换为无效,则会抛出异常而另一个将“优雅地失败”。
您使用哪一个确实取决于方案。如果你的变量是代码的一个组成部分(即,如果转换失败,如果继续执行代码没有意义),只需使用直接转换并处理异常。但是,有些情况下不抛出异常并处理null值也非常有用。
答案 2 :(得分:1)
因为关键字是防御性强制转换,在投射中存在异常时不会抛出异常