The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

(TextBox) obj 與 obj as TextBox 有什麼不同?

今天有朋友問我以下問題:

TextBox tbx = (TextBox) obj;

TextBox tbx =  obj as TextBox;

這兩種寫法有甚麼不同?

主要的差別就在於使用 (TextBox) obj 語法有可能會發生 NullReferenceException 例外,用 obj as TextBox 這種語法就不會不會。

在 MSDN 上 as (C# 參考) 有說到:

expression as type
等於以下語法:
expression is type ? (type)expression : (type)null

所以當你用 (TextBox) obj 這種方式做轉型的時候,如果剛好 obj 是 null 的話,程式可能就會發生錯誤!

但也不代表用 as 運算子就不會發生錯誤啦,可能只是發生的時間比較晚而已,所以做好 Error Handling 還是有必要的。