现代程序员写代码没有人敢说自己没用过泛型 , 这个泛型模板T可以被任何你想要的类型替代,确实很魔法很神奇,很多人也习以为常了,但就是这么有趣的泛型T底层到底是怎么帮你实现的,不知道有多少人清楚底层玩法,这篇我就试着来分享一下,不一定全对哈 。。。
一:没有泛型前现在?.NETcore 3.1和最新的.netframework8早已经没有当初那个被人诟病的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接收 , 这就引入了两大问题,装箱拆箱和类型安全 。
1. 装箱拆箱这个很好理解,因为你使用了祖宗类,所以当你 Add 的时候塞入的是值类型的话,自然就有装箱操作,比如下面代码:
ArrayList arrayList = new ArrayList();arrayList.Add(3);
<1> 占用更大的空间这个问题我准备用windbg看一下,相信大家知道一个int类型占用4个字节,那装箱到堆上是几个字节呢,好奇吧
【用了这么多年的泛型,你对它到底有多了解?】
推荐阅读
- 任正非和孟晚舟多次提的「算力」 到底是个啥?
- 26岁姑娘患上“死臀综合征”!她的这个习惯很多人都有→
- 平时这么做,5个快速健康有效的减肥方法
- 吉利丁片多久能凝固,有没有温度要求 吉利丁片多久能凝固
- 2003年梅艳芳弥留之际,多次吩咐保镖:我死也不见赵文卓和吴君如
- 多多果园加速药水找不到了 多多果园加速药水在哪里
- 张若昀有多痛苦?妹妹变后妈,被骗两亿后父子决裂对簿公堂!
- 知名男星自曝一年没拍戏,圈内人结婚随份子,嫌给太多全网征建议
- 三伏贴贴几次才有效果 三伏贴贴多少次合适
- 看完《金牌客服董董恩》,才知当年乔任梁对徐璐的两字评价多准确