C#筆記——3.泛型
阿新 • • 發佈:2018-04-29
運行時 C# 運行速度 操作 編譯 ID 數據 泛型接口 返回值
泛型簡介:
C#2.0泛型機制的引入,實現了類型和方法的參數化,即類型成為參數實現邏輯復用,將大量的類型安全檢查從運行時轉移到了編譯時,提高了代碼運行速度。
泛型的優點:
1)類型安全
當我們使用泛型類型或者泛型方法來操作一個具體的數據類型時,編譯器會保證這些泛型類型或者泛型方法只適用於與該數據類型兼容的對象,否則,編譯器將會報錯。
2)提升性能
如果沒有泛型機制,我們則需要使用object類型來作為參數或者返回值類型,這樣則需要進行強制的類型轉換;當我們操作的對象是值類型時,又將會需要裝箱與拆箱的操作。引入泛型機制之後,我們通過創建泛型類型或者泛型方法來操作類型,則無需進行強制類型轉換,運行時便無需進行類型安全檢查,操作值類型時也無需進行裝箱、拆箱,提升了代碼性能
泛型類型
C#語言提供的泛型機制主要分為兩種形式:
泛型類型(包括:泛型類、泛型接口、泛型委托以及泛型結構)以及泛型方法。
泛型類型的內部實現機制:
當泛型類型的類型參數被指定之後,
1)在對於使用了泛型類型參數的代碼進行JIT編譯時,運行時首先會獲取其對應的CIL代碼;
2)使用指定的類型實參進行替換;
3)最後將替換後的CIL代碼編譯為原生代碼
泛型接口
泛型接口可防止在使用非泛型接口操作值類型時可能引起的裝箱操作,並且提供編譯時的類型安全。
泛型委托
泛型方法
泛型中的類型約束和類型推斷
C#筆記——3.泛型