[你必須知道的.NET]第一回:恩怨情仇:is和as

本文將介紹如下內 容:編程

• 類型轉換安全

• is/as操做符小議 框架

1. 引言 

類型安全是.NET設計之初重點考慮 的內容之一,對於程序設計者來講,徹底把握系統數據的類型安全,常常是力不從心的問題。如今,這一切已經在微軟大牛們的設計框架中爲你解決了。在.NET 中,一切類型都必須集成自 System.Object類型,所以咱們能夠很容易的得到對象的準確類型,方法是:GetType()方法。那麼.NET中的類型轉換,應該考慮的地方 有那些呢?設計

2. 概 念引入對象

類型轉換包括顯示 轉換和隱式轉換,在.NET中類型轉換的基本規則以下:字符串

  • 任何類型均可以安全的轉換爲其基類類型,能夠由隱式轉換來完成;
  • 任何類型轉換爲其派生類型時,必須進行顯示轉換,轉換的規則是:(類型名)對象名;
  • 使用GetType能夠取得任何對象的精確類型;
  • 基本類型可使用Covert類實現類型轉換;
  • 除了string之外的其餘類型都有Parse方法,用於將字符串類型轉換爲對應的基本類型;
  • 值類型和引用類型的轉換機制稱爲裝箱(boxing)和拆箱(unboxing)。

3. 原 理與示例說明string

淺談了類型轉換的 幾個廣泛關注的方面,該將主要精力放在is、as操做符的恩怨情仇上了。類型轉換將是個較大的話題,留於適當的時機討論。

is/as操做符,是C#中用於類型轉換的,提供了對類型兼容性的判斷,從而使得類型轉換控制在安全的範疇,提供了靈活的類型轉換控制。

is的規則以下:io

  • 檢查對象類型的兼容性,並返回結果,true或者false;
  • 不會拋出異常;
  • 若是對象爲null,則返回值永遠爲false。

其典型用法爲:程序設計

 1 object o = new object();
 2 
 3 class A
 4 
 5 {
 6 
 7 }
 8 
 9 if (o is A)  //執行第一次類型兼容檢查
10 
11 {
12 
13   A a = (A) o;  //執行第二次類型兼容檢查
14 
15 }
16 
17class

 as的規則以下:

  • 檢查對象類型的兼容性,並返回結果,若是不兼容就返回null;
  • 不會拋出異常;
  • 若是結果判斷爲空,則強制執行類型轉換將拋出NullReferenceException異常。

其典型用法爲: 

 1 object o = new object();
 2 
 3 class B
 4 
 5 {
 6 
 7 }
 8 
 9 B b = o as B;  //執行一次類型兼容檢查
10 
11 if (b != null)
12 
13 {  
14 
15   MessageBox.Show("b is B's instance.");
16 
17 }
18 
19

4. 結 論

縱上比較,is/as操做符,提供了更加靈活的類型轉型方式,可是as操做符在執行效率上更勝一籌,咱們在實際的編程中應該體會 其異同,酌情量才。 

相關文章
相關標籤/搜索