日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

用了這么多年的泛型,你對它到底有多了解?

來源: 責編: 時間:2023-09-28 15:53:07 501觀看
導(dǎo)讀現(xiàn)代程序員寫代碼沒有人敢說自己沒用過泛型,這個泛型模板T可以被任何你想要的類型替代,確實很魔法很神奇,很多人也習(xí)以為常了,但就是這么有趣的泛型T底層到底是怎么幫你實現(xiàn)的,不知道有多少人清楚底層玩法,這篇我就試著來分

現(xiàn)代程序員寫代碼沒有人敢說自己沒用過泛型,這個泛型模板T可以被任何你想要的類型替代,確實很魔法很神奇,很多人也習(xí)以為常了,但就是這么有趣的泛型T底層到底是怎么幫你實現(xiàn)的,不知道有多少人清楚底層玩法,這篇我就試著來分享一下,不一定全對哈。。。0X928資訊網(wǎng)——每日最新資訊28at.com

一:沒有泛型前

現(xiàn)在的netcore 3.1和最新的framework8早已經(jīng)沒有當初那個被人詬病的ArrayList了,但很巧這玩意不得不說,因為它決定了C#團隊痛改前非,拋棄過往重新上路,上一段ArrayList案例代碼。0X928資訊網(wǎng)——每日最新資訊28at.com

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接收,這就引入了兩大問題,裝箱拆箱和類型安全。0X928資訊網(wǎng)——每日最新資訊28at.com

1. 裝箱拆箱

這個很好理解,因為你使用了祖宗類,所以當你 Add 的時候塞入的是值類型的話,自然就有裝箱操作,比如下面代碼:0X928資訊網(wǎng)——每日最新資訊28at.com

ArrayList arrayList = new ArrayList();            arrayList.Add(3);

<1> 占用更大的空間

這個問題我準備用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

上一篇: 六個討厭 Tailwind CSS 的理由

下一篇: WPF中WCF應(yīng)用實例

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 临汾市| 哈密市| 扬州市| 新竹县| 漳平市| 兴化市| 运城市| 临江市| 紫阳县| 金平| 揭东县| 沙坪坝区| 萨嘎县| 云梦县| 洛川县| 蒙山县| 明水县| 石阡县| 梅河口市| 苗栗市| 囊谦县| 三都| 车致| 台南县| 泰州市| 延寿县| 平远县| 修文县| 长海县| 凌源市| 黄骅市| 黄平县| 奇台县| 广安市| 淮安市| 高台县| 澄江县| 抚顺县| 兴宁市| 上思县| 北辰区|