今天有朋友問我以下問題:
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 還是有必要的。