可能重複:
casting vs using the 'as' keyword in the CLRC#不同的鑄造方法 - (T)VS OBJ OBJ爲T
我已經看到了C#鑄造的兩種不同的方式。
例如:
MyObj foo = (MyObj) bar; // this is what I see most of the times
MyObj foo = bar as MyObj; // I do see this sometimes
- 那麼,有什麼根本區別?
- 鑄造
style 1
和style 2
的專有名稱是什麼? - 我該如何決定何時使用什麼?
- 是否有任何重大性能問題?
- 還有什麼我應該知道的與這個話題有關?如果轉換是無效
非常感謝您就這個:)
您沒有提及類型轉換運算符,它們不涉及轉換,但使用與轉換相同的語法。 –
@梅林:好的,我會補充一點,謝謝。 :) @pst:感謝您的清理! – Mehrdad
值得注意的是,'foo = bar作爲SomeType;'比'if(bar是SomeType){foo =(SomeType)bar; },因爲這個類型只被檢查一次。它比* try {foo =(SomeType)bar要快得多*; } catch(InvalidCastException){}'如果轉換失敗,因爲異常非常昂貴。 – Sven