[C#] 003.區別對待強制轉型與as和is - (as 效能比 強制轉型好且安全)

讀【157個完美化C#的建議】一書的理解筆記 - 003

重點: C# 型別轉換盡量別用 顯示轉型(強制),在愈複雜的情境下,用as 會比較優

流程說明
1. as用法
2. is用法
3. 顯示轉型缺點
4.結論

首先我們先定義範例用的型別 dog 和 cat 

        /// <summary>
        /// 定義貓的型別
        /// </summary>
        public class cat
        {

        }

        /// <summary>
        /// 定義狗的型別
        /// </summary>
        public class dog 
        {

        } 

程式碼實作

object a = new cat();
   dog b = new dog();

1. as用法

as 也是將型別轉換型別,以下是對變數a 利用as 語法轉為 dog型別 

結果: temp變數得到 null 因為a的原始型別是cat

var temp = a as dog;

2. is用法

is 是判斷型別是否為指定的型別類別,是的話為true ,否則為false

bool isKindDog = a is dog;// 結果:false
bool isKindCat = a is cat;// 結果:true

 

3. 顯示轉型缺點

顯示轉型就是如  (int)variable ,將變數轉為() 內的型別

以下程式碼會有嚴重的問題,將會出現Exception,造成程式錯誤,必須用Try Catch避免程式異常

Try Catch 基本上一定會消耗記憶體資源,包覆愈多層,效能耗費就愈多

var temp3 = (dog)a;

 

4.結論

盡量用as 取代 顯示轉型。is 語法是涉及必須使用基底型別轉換的時候才搭配使用

github連結(Vs2015) : 點我下載