摘要:[C#]is和as
1.引言
類型安全是.net設計之初重點考慮的內容之一,對於程式設計者來說,完全把握系統數據的類型安全,經常市立不從心的問題。
現在,這一切已經在微軟的設計框架中為你解決了。在.NET中,一切類型都必須繼承至System.Object類型,因此我們可以很容易的獲得對象(Object)的準確類型,方法是:GetType()方法。那麼.NET中的類型轉換,因該考慮的地方有那些呢?
2.概念引入
類型轉換包含顯示轉換和隱式轉換,在.NET中類型轉換的基本規則如下:
●任何類型都可以安全的轉換為其基類類型,可由隱式轉換來完成;
●任何類型轉換為其衍生類時,不需進行顯示轉換,轉換的規則是:(類型名)對象名;
●使用GetType可以取得任何對象(Object)的精確類型;
●基本類型可以使用Covert類實現類型轉換;
●除了String以外的類型都有Parse方法,用於將字串類型轉壞為對應的基本類型;
●值類型和引用類型的管換機制稱為裝箱(boxing)和拆箱(unboxing)。
3.原理與範例說明
淺談了類型轉換的幾個普遍關注的方面,該將主要精力放在is、as關鍵字的恩怨情仇上了。類型轉換將是個較大的話題,留於適當的時機討論。
is/as關鍵字,是C#中用於轉換類型的,提供了對類型兼容性的判斷,從而使類型轉換控制在安全的範圍,提供了靈活的類型轉換控制。
is的規則如下:
●檢查對象類型的兼容性,並返回結果,true或是false;
●不會拋出異常;
●如果對象為Null(空),則返回值永遠為false。
其典型用法為:
object o = new object();
class A
{
}
if (o is A) //執行第一次類型兼容檢查
{
A a = (A) o; //執行第二次類型兼容檢查
}
as的規格如下:
●檢查對象類型的兼容性,並返回結果,如果不兼容就返回null;
●不會拋出異常;
●如果結果判斷為空,則強制執行類型轉換將拋出NullReferenceException異常。
其典型用法為:
object o = new object();
class B
{
}
B b = o as B; //執行一次類型兼容檢查
if (b != null)
{
MessageBox.Show("b is B's instance.");
}
4.結論
縱以上比較,is/as關鍵字,提供了更加靈活的類型轉換方式,但是as關鍵字在執行率上更勝一籌,我們在實際的程式中應該體會其異同。酌情量才。
Copy to ©2007 Anytao.com
我只是個小小的入門者