只是想知道哪一個是速度更快,有什麼區別。
MyClass test = someclass as MyClass;
或
MyClass test =(MyClass)someclass;
只是想知道哪一個是速度更快,有什麼區別。
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