這篇文章主要介紹了C#中is與as的區別,較爲詳細的分析了is與as的原理與特性及用法區別,具備很好的學習借鑑價值,須要的朋友能夠參考下c#
本文實例分析了C#中is與as的區別,分享給你們供你們參考。具體分析以下:函數
1、C#類型的轉換學習
在c#中類型的轉換分兩種:顯式和隱式,基本的規則以下:spa
一、基類對象轉化爲子類對象,必須顯式轉換,規則:(類型名) 對象。
二、值類型和引用類型的轉換採用裝箱(boxing)或拆箱(unboxing).
三、子類轉化爲基類對象。
四、基本類型互相之間轉化能夠用Covent類來實現。
五、字符串類型轉換爲對應的基本類型用Parse方法,除了String類型外其餘的類型均可以用Parse方法。
六、用GetType能夠取得對象的精確類型。
七、子類轉化爲基類,採用隱式轉換。.net
2、C#中的is設計
檢查一個對象是否兼容於其餘指定的類型,並返回一個Bool值,若是一個對象是某個類型或是其父類型的話就返回爲true,不然的話就會返回爲false。永遠不會拋出異常
若是對象引用爲null,那麼is操做符老是返回爲false,由於沒有對象能夠檢查其類型。code
例如 htm
代碼以下:對象
3、C#中as的轉換規則字符串
一、檢查對象類型的兼容性,並返回轉換結果,若是不兼容則返回null;
二、不會拋出異常;
三、若是結果判斷爲空,則強制執行類型轉換將拋出NullReferenceException異常;
四、用as來進行類型轉換的時候,所要轉換的對象類型必須是目標類型或者轉換目標類型的派生類型
例如
使用as操做符有以下幾點限制
第一個就是,不用在類型之間進行類型轉化,即以下編寫就會出現編譯錯誤。
第二個就是,不能應用在值類型數據,即不能以下寫(也會出現編譯錯誤)。
4、as與is的區別
一、AS在轉換的同事兼判斷兼容性,若是沒法進行轉換,則 as 返回 null(沒有產生新的對象)而不是引起異常。有了AS我想之後就不要再用try-catch來作類型轉換的判斷了。所以as轉換成功要判斷是否爲null。
二、AS是引用類型類型的轉換或者裝箱轉換,不能用與值類型的轉換。若是是值類型只能結合is來強制轉換
三、IS只是作類型兼容判斷,並不執行真正的類型轉換。返回true或false,不會返回null,對象爲null也會返回false。
四、AS模式的效率要比IS模式的高,由於藉助IS進行類型轉換的化,須要執行兩次類型兼容檢查。而AS只須要作一次類型兼容,一次null檢查,null檢查要比類型兼容檢查快。
5、在進行類型轉換的時候,能夠按照以下的方式進行選擇
一、Object => 已知引用類型
使用as操做符來完成
二、Object => 已知值類型
先使用is操做符來進行判斷,再用類型強轉方式進行轉換
三、已知引用類型之間轉換
首先須要相應類型提供轉換函數,再用類型強轉方式進行轉換
四、已知值類型之間轉換
最好使用系統提供的Convert類所涉及的靜態方法
6、(int)和Int32.Parse(),Convert.ToInt32()三者的區別
一、(int)轉換:用在數值範圍大的類型轉換成數值範圍小的類型時使用,可是若是被轉換的數值大於或者小於數值範圍,則獲得一個錯誤的結果,利用這種轉換方式不能將string轉換成int,會報錯。
二、Int32.Parse()轉換:在符合數字格式的string到int類型轉換過程當中使用,並能夠對錯誤的string數字格式的拋出相應的異常。
三、Convert.ToInt32()轉換:使用這種轉換,所提供的字符串必須是數值的有效表達方式,該數還必須不是溢出的數。不然拋出異常。
但願本文所述對你們的C#程序設計有所幫助。
轉載自:http://www.jb51.net/article/56657.htm。