对象在C#铸造
只是想知道哪一个是速度更快,有什么区别。
MyClass test = someclass as MyClass;
或
MyClass test =(MyClass)someclass;
不同的是,当它失败,而是它与null
填充L值,而与支架铸件将抛出InvalidCastException
的as
关键字不会抛出异常。
如果所需演员表无效,as
关键字将返回null
。在这种情况下,显式强制转换会引发异常。因此,我相信隐含的演员阵容(as
)较慢,尽管它可能可以忽略不计。
nope,因为''铸造比前缀铸造快得多。 – Femaref 2010-08-25 16:02:33
有趣。你有这个技术原因吗? – TreDubZedd 2010-08-25 16:14:31
你可以在我的答案中提供的codeproject链接中看到技术原因。 – Femaref 2010-08-25 17:47:25
更快?这可能不会有问题。您必须等到性能分析应用程序告诉您演员阵容花费太长时间的场景。
区别?
将设置测试到空时SomeClass的不能转换到MyClass的。
MyClass test = someclass as MyClass;
将抛出一个异常时,SomeClass的不能转换到MyClass的。
MyClass test = (MyClass)someclass;
而且现在有一个有意义的异常比NullReferenceException稍后更好。所以我会说坚持定期演员,除非你在'as'演员之后立即处理无效。 – 2010-08-25 16:03:11
另请注意,您不能在值类型中使用as关键字。 – 2010-08-25 16:06:25