1. 程式人生 > 其它 >C#基礎語法之-泛型

C#基礎語法之-泛型

泛型:一共7個知識點

1.引入泛型,延遲宣告

2.如何宣告和使用泛型

3.泛型的好處和原理

4.泛型類,泛型方法,泛型介面,泛型委託

5.泛型約束

6.協變,逆變

7.泛型快取

一.為啥會出現泛型,有啥用,啥時候用?

為什麼有泛型?泛型有啥用???

問:為啥會有泛型?

答:回到根本上,簡單講就是在.net1.0的時候,不同的引數要做同一件事,要寫很多方法。所以微軟在2.0的時候就推出了新的語法,泛型。

有啥用?

答:出現泛型根本要解決的問題就是,不同的引數,做同一件事的問題。

問:啥時候用?

答:

1.當你寫了好幾個方法,除了引數不同,都是幹同一件事的,這時就可以用泛型方法。

2.當你寫了好幾個類,除了引數不同,類都是幹同一個事的,此時就要用泛型類。

3.當你寫了好幾個介面,除了引數不同,類都是幹同一個事的,此時就要用泛型介面。

4.當你寫了好幾個委託除了引數不同,類都是幹同一個事的,此時就要用泛型委託。

二.泛型種類

.net Framwork2.0第一次推出的一個語法泛型

泛型只有4類:泛型方法,泛型類,泛型介面,泛型委託

泛型的特點,沒有寫死引數型別,呼叫的時候才指定型別,就叫【延遲宣告】:把引數型別的宣告推遲到呼叫

泛型發方法解決的問題,用一個方法,滿足不同的引數型別;做相同的事

三.
-泛型約束
泛型約束--基類約束(不能是sealed):
1)可以呼叫基類的一切屬性方法---權利
2)可以強制保證T基類或者基類的子類--義務

四.
1>.Net4.0出現的,本質上就是解決list<父類>=list<子類>之間相互轉換的問題,因為之前只是理論上說的通,編譯器會報錯的,協變和逆變的出現就是為了解決它。
2>協變和逆變只能放在介面或者委託的泛型引數前面
3>out 協變修飾返回值 , in 逆變 修飾傳入引數
4>協變描述:list<父類>=list<子類>
5>逆變描述:list<子類>=list<父類>

五.
-泛型快取
1>簡單的描述就是,每個泛型類,都會生成一個副本(就算裡面有靜態欄位,靜態方法,這些靜態也會生成一個新的副本

)
2>泛型快取是不會釋放的
3>泛型快取效率高,比字典高多了

插入語法知識:

裝箱和拆箱

每一個執行緒都有執行【棧】,棧裡面的東西等執行緒執行結束的時候,需要釋放的,棧裡面存放值型別,【堆】裡面存放引用型別是物件共享的。