[C#]is和as

  • 18524
  • 0
  • 2011-01-27

摘要:[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

我只是個小小的入門者