2

和有什么区别

string url = (string)data AND string url = data as string;

哪个是更好的方法?

4

3 回答 3

6

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

哪个是更好的方法?

这将取决于您要达到的目标。

于 2012-06-11T06:29:52.097 回答
3

可以将as其视为将对象转换为特定类型的尝试。如果失败,结果变量将保持null. 另一方面,直接强制转换是强制转换1 way ticket,如果失败将抛出异常。

本质上,当对象可以转换为特定类型时,它们会做完全相同的事情,但是如果您的转换无效,一个会抛出异常,另一个会“优雅地失败”。

你使用哪一个真的取决于场景。如果您的变量是代码的一个组成部分(即,如果转换失败则继续执行代码没有意义),只需使用直接转换并处理异常。但是,在某些情况下,不引发异常并处理空值也非常有用。

于 2012-06-11T06:36:56.467 回答
1

as 关键字是防御性强制转换,当有一个强制转换时不会抛出异常

于 2012-06-11T06:32:31.520 回答