[ASP.NET]91之ASP.NET由淺入深 不負責講座 Day29 - 泛型
前言
經過Day25~Day28 Ajax增加user experience的洗禮後,我們要再把注意力拉回.net framework的基礎: 泛型。
這其實有點難描述,因為會繞到更多的基礎,最後可能會從型別開始講。這邊,太基礎的部分,我會附上reference來當作參考。
Issues
- CLR 2.0的新功能
 - 使用泛用型別以最佳化程式碼重複使用、型別安全性和效能。
 - 泛型的最常見用法是建立集合類別。
 - .NET Framework 類別庫包含 System.Collections.Generic 命名空間中的數種新泛用集合類別。在任何可能的情況下都應該使用這些類別取代類別 (例如在 System.Collections 命名空間中的 ArrayList)。
 - 您可以建立自己的泛用介面、類別、方法、事件和委派 (Delegate)。
 - 泛用類別可能會被限制為啟用對特定資料型別上的方法進行存取。
 - 在泛型資料型別中使用的型別資訊,可以在執行階段透過Reflection取得。
 
簡單的說:實值型別與object型別的轉換
     
boxing & unboxing的問題 
- 型別轉換的錯誤
 - 效能的消耗
 - 開發時編譯無法得知錯誤,要到run time才知道
 - 參考型別Null的問
 
     
泛型的優點     
解決大部分boxing與unboxing的問題
- 安全型別,避免轉型失敗的風險
 - 避免boxing與unboxing效能消耗問題
 - 編譯時期就能知道是否有型別錯誤
 
同樣的function,針對不同型別,可以只寫一份。
例如factory pattern透過Reflection產生任意型別 :
            {
                var obj = (T)Assembly.Load(typeof(T).Assembly.FullName).CreateInstance(typeof(T).Assembly.GetName().Name + "." + product);
                return obj;
            }補充
blog 與課程更新內容,請前往新站位置:http://tdd.best/
