﻿# (TextBox) obj 與 obj as TextBox 有什麼不同？

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

> TextBox tbx = (TextBox) obj;
> 
> TextBox tbx =  obj as TextBox;
> 
> 這兩種寫法有甚麼不同?

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

在 MSDN 上 [as (C# 參考)](http://technet.microsoft.com/zh-tw/library/cscsdfbt\(VS.80\).aspx "as (C# 參考)") 有說到:

> expression as type

等於以下語法：

> expression is type ? (type)expression : (type)null

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

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