現(xiàn)代程序員寫代碼沒有人敢說自己沒用過泛型,這個泛型模板T可以被任何你想要的類型替代,確實很魔法很神奇,很多人也習(xí)以為常了,但就是這么有趣的泛型T底層到底是怎么幫你實現(xiàn)的,不知道有多少人清楚底層玩法,這篇我就試著來分享一下,不一定全對哈。。。
現(xiàn)在的netcore 3.1和最新的framework8早已經(jīng)沒有當初那個被人詬病的ArrayList了,但很巧這玩意不得不說,因為它決定了C#團隊痛改前非,拋棄過往重新上路,上一段ArrayList案例代碼。
public class ArrayList { private object[] items; private int index = 0; public ArrayList() { items = new object[10]; } public void Add(object item) { items[index++] = item; } }
上面這段代碼,為了保證在Add中可以塞入各種類型 eg: int,double,class, 就想到了一個絕招用祖宗類object接收,這就引入了兩大問題,裝箱拆箱和類型安全。
這個很好理解,因為你使用了祖宗類,所以當你 Add 的時候塞入的是值類型的話,自然就有裝箱操作,比如下面代碼:
ArrayList arrayList = new ArrayList(); arrayList.Add(3);
這個問題我準備用windbg看一下,相信大家知道一個int類型占用4個字節(jié),那裝箱到堆上是幾個字節(jié)呢,好奇吧
本文鏈接:http://www.www897cc.com/showinfo-26-11909-0.html用了這么多年的泛型,你對它到底有多了解?
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
下一篇: WPF中WCF應(yīng)用實例