这两种类型之间的区别到底是什么?
SomeClass sc = (SomeClass)SomeObject;
SomeClass sc2 = SomeObject as SomeClass;通常,它们不应该都显式转换为指定的类型吗?
发布于 2008-08-05 15:44:46
如果源类型不能转换为目标类型,则前者将抛出异常。后者将导致sc2为空引用,但也不例外。
编辑
我最初的答案当然是最明显的区别,但作为Eric Lippert points out,这并不是唯一的一个。其他差异包括:
最后,使用'as‘与cast操作符,您还会说“我不确定这是否会成功。”
发布于 2008-08-05 16:15:38
另请注意,只能将as关键字与引用类型或可为note的类型一起使用
即:
double d = 5.34;
int i = d as int;将不会编译
double d = 5.34;
int i = (int)d;将进行编译。
发布于 2008-09-16 19:21:22
当类型转换失败时,使用" as“进行类型转换当然要快得多,因为它避免了抛出异常的代价。
但当强制转换成功时,它并不会更快。http://www.codeproject.com/KB/cs/csharpcasts.aspx的图表具有误导性,因为它没有解释它测量的是什么。
底线是:
https://stackoverflow.com/questions/2483
复制相似问题