2010-08-25 107 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;