熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

你必須知道的.NET之恩怨情仇:is和as

2013-11-13 12:20:22  來源: .NET編程 
     引言

  類型安全是NET設計之初重點考慮的內容之一對於程序設計者來說完全把握系統數據的類型安全經常是力不從心的問題現在這一切已經在微軟大牛們的設計框架中為你解決了NET中一切類型都必須集成自SystemObject類型因此我們可以很容易的獲得對象的准確類型方法是GetType()方法那麼NET中的類型轉換應該考慮的地方有那些呢?

   概念引入

  類型轉換包括顯示轉換和隱式轉換NET中類型轉換的基本規則如下

  ·任何類型都可以安全的轉換為其基類類型可以由隱式轉換來完成

  ·任何類型轉換為其派生類型時必須進行顯示轉換轉換的規則是(類型名)對象名

  ·使用GetType可以取得任何對象的精確類型

  ·基本類型可以使用Covert類實現類型轉換

  ·除了string以外的其他類型都有Parse方法用於將字符串類型轉換為對應的基本類型

  值類型和引用類型的轉換機制稱為裝箱(boxing)和拆箱(unboxing)

   原理與示例說明

  淺談了類型轉換的幾個普遍關注的方面該將主要精力放在isas操作符的恩怨情仇上了類型轉換將是個較大的話題留於適當的時機討論

  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)

{

 MessageBoxShow(b is Bs instance);

}


   結論

  縱上比較is/as操作符提供了更加靈活的類型轉型方式但是as操作符在執行效率上更勝一籌我們在實際的編程中應該體會其異同酌情量才
From:http://tw.wingwit.com/Article/program/net/201311/15690.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.