字符串url =(字符串)数据和字符串url = data作为字符串有什么区别;

时间:2012-06-11 06:28:57

标签: c# string casting

之间有什么区别

string url =(string)数据 和 string url = data as string;

哪种方式更好?

3 个答案:

答案 0 :(得分:6)

如果转换失败,第一个构造将抛出InvalidCastException,而如果as变量不是字符串,则data运算符将返回null。

  

哪种方式更好?

这取决于你想要达到的目标。

答案 1 :(得分:3)

as视为尝试,将对象强制转换为特定类型。如果失败,结果变量将保留null。另一方面,直接投射是1 way ticket投射,如果失败则会抛出异常。

基本上,当对象可以转换为特定类型时,它们会执行完全相同的操作,但是如果转换为无效,则会抛出异常而另一个将“优雅地失败”。

您使用哪一个确实取决于方案。如果你的变量是代码的一个组成部分(即,如果转换失败,如果继续执行代码没有意义),只需使用直接转换并处理异常。但是,有些情况下不抛出异常并处理null值也非常有用。

答案 2 :(得分:1)

因为关键字是防御性强制转换,在投射中存在异常时不会抛出异常