1. 程式人生 > WINDOWS開發 >C#關於泛型

C#關於泛型

1、泛型(Generic)是c#2.0和通用語言執行時CLR的一個新特性。泛型為.NET的框架引入型別引數(TYPE parameter ),這使得我們在設計類和方法時,不用確定一個或多個具體的引數,其具體的引數可以延遲到客戶的程式碼中去宣告和實現。這避免了執行時型別的轉換或裝箱拆箱操作的效能損耗。

2、泛型的宣告:在方法名後面加上<>就是一個泛型方法。

下面附加一段極其簡單的程式碼,說明一下泛型方法的宣告以及呼叫。

技術分享圖片

我們在呼叫泛型方法的時候,需要再呼叫時在<>裡面指明是什麼型別。

當然,這種方法在我們方法內部是不安全的,因為我們不知道會傳入什麼型別,所以,我們可以使用一些約束。

例如:

技術分享圖片

加了約束之後,我們在呼叫時,就只能按照約束傳參了。這樣就提高了安全性。

3、下面圖片中可以看一下關於泛型類或者泛型介面的宣告

技術分享圖片

4、關於泛型的協變與逆變

協變與逆變只能是在泛型介面或者泛型委託中。

我們先宣告兩個類,分別是Bird,Sparrow:Bird

技術分享圖片

在分別定義兩個泛型介面分別用in 和out修飾引數介面並實現了他們

技術分享圖片

接下來就可以看一下關於協變與逆變的程式碼編寫了

如圖以及圖中程式碼備註所示:

技術分享圖片