2012-06-11 66 views

回答

6

如果轉換失敗,第一個構造將拋出InvalidCastException,而如果data變量不是字符串,則as運算符將返回null。

哪個更好?

這取決於你想要達到的目標。

1

的關鍵字是防守投時,有一個鑄造的as

3

覺得作爲一個嘗試對象轉換爲特定的類型,不會拋出異常。如果失敗,結果變量將保存爲null。另一方面,直接投射是1 way ticket強制轉換,如果失敗,則會引發異常。

本質上,它們在對象可以轉換爲特定類型時執行完全相同的操作,但是如果您的轉換無效,則會拋出異常,另一個將「優雅地失敗」。

您使用哪一個確實取決於場景。如果你的變量是代碼的一個組成部分(也就是說,如果在轉換失敗時繼續前進代碼沒有意義),只需使用直接轉換並處理異常。但是,有些情況下不會引發異常並處理空值也非常有用。

相關問題