是什麼string url =(string)data和string url = data as string之間的區別是什麼?
串URL =(字符串)數據 AND 串URL =數據串之間的差;
哪一種更好?
是什麼string url =(string)data和string url = data as string之間的區別是什麼?
串URL =(字符串)數據 AND 串URL =數據串之間的差;
哪一種更好?
如果轉換失敗,第一個構造將拋出InvalidCastException
,而如果data
變量不是字符串,則as
運算符將返回null。
哪個更好?
這取決於你想要達到的目標。
的關鍵字是防守投時,有一個鑄造的as
覺得作爲一個嘗試對象轉換爲特定的類型,不會拋出異常。如果失敗,結果變量將保存爲null
。另一方面,直接投射是1 way ticket
強制轉換,如果失敗,則會引發異常。
本質上,它們在對象可以轉換爲特定類型時執行完全相同的操作,但是如果您的轉換無效,則會拋出異常,另一個將「優雅地失敗」。
您使用哪一個確實取決於場景。如果你的變量是代碼的一個組成部分(也就是說,如果在轉換失敗時繼續前進代碼沒有意義),只需使用直接轉換並處理異常。但是,有些情況下不會引發異常並處理空值也非常有用。
轉發了許多其他問題,我的意思是重複:[以下鑄造在C#中有什麼區別?](http://stackoverflow.com/questions/702234/what-is-the-difference-between-the-以下-投射式-c)的 – Bastardo