2010-08-25 83 views

回答

3

不同的是,当它失败,而是它与null填充L值,而与支架铸件将抛出InvalidCastExceptionas关键字不会抛出异常。

+1

而且现在有一个有意义的异常比NullReferenceException稍后更好。所以我会说坚持定期演员,除非你在'as'演员之后立即处理无效。 – 2010-08-25 16:03:11

+1

另请注意,您不能在值类型中使用as关键字。 – 2010-08-25 16:06:25

1

如果所需演员表无效,as关键字将返回null。在这种情况下,显式强制转换会引发异常。因此,我相信隐含的演员阵容(as)较慢,尽管它可能可以忽略不计。

+0

nope,因为''铸造比前缀铸造快得多。 – Femaref 2010-08-25 16:02:33

+0

有趣。你有这个技术原因吗? – TreDubZedd 2010-08-25 16:14:31

+0

你可以在我的答案中提供的codeproject链接中看到技术原因。 – Femaref 2010-08-25 17:47:25

0

as铸造速度比前缀铸造快,但不会产生可靠的结果,即。如果不能执行强制转换,它将返回null。你必须自己处理。如果T1无法铸造到T2,则前缀投射将抛出异常。

参见:blog

as vs prefix

codeproject

+2

我以为那样慢一点.... – Grzenio 2010-08-25 16:03:02

+0

gj与downvote无论谁是。 – Femaref 2010-08-25 16:07:52

1

更快?这可能不会有问题。您必须等到性能分析应用程序告诉您演员阵容花费太长时间的场景。

区别?

将设置测试SomeClass的不能转换到MyClass的

MyClass test = someclass as MyClass; 

将抛出一个异常时,SomeClass的不能转换到MyClass的

MyClass test = (MyClass)someclass;