面向对象基础指数(6)重构 集合 拆装箱 泛型

来源:互联网 发布:百度网盘vip淘宝 编辑:程序博客网 时间:2024/04/30 15:35


Restructure  重构(重建调整重组)


          什么?你竟然不知道重构是什么意思、额……重构嘛、就是重新构造的意思、放到代码这……其实就是把以前的代码结构、以前的逻辑关系、以前的代码、改下、说俗了、就是改代码……没错改代码就是重构、只是个编程专业词而已= =、说两个字比 说改代码啥的酷!所以后专业点、说重构。

官方解释

        重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。



集合

          集合!稍息、立正!向其看齐、向前看- - 别乐、我这是思维闪现、刚你想到了什么场景?一堆不整齐的人、卡卡卡跑到了一起、组成了列队、没错这就是集合!——体育课上的 = =

集合A={1,2,5}集合B={3、4} 他们的全集U={1,2,3,4,5} 、这就是集合!——数学上的 = 


————我可没瞎扯、其实集合就是一组元素、在编程上和像数组、可以理解为数组的升级版、数组要声明数组的个数、容易冗余或溢出、在两个元素之间添加元素也比较困难、而集合的个数是根据数据的个数动态改变的、集合里的元素可以是不同类型的。 


注:(集合跟数组一样、常用语循环遍历、所以不同类型的数据不免会出错、没关系咱有泛型这个安全帽!)


实际应用


1、命名空间

        using System.Collections;

2、声明一个集合变量

        ILst arrayAnimal;

3、实例化、动态添加3个元素、

              


删除元素:如果删除了集合中的第一个元素、那么后面的元素就会挤上来、第2个元素就成了第一个、所以上图删除了2次第一个元素、其实删了集合中的前两个元素、这里也体现了集合的动态、就跟银行排队一样、第一个人办完业务就走了、第二个人就成了第一个办业务的人。 


读取集合的个数:arrayAnimal.Count.ToString()

关于集合的循环遍历IEnumerable和IEnumerator 详解 有兴趣的可以看下。




拆装箱


       (为什么装箱?)为什么送快递要装到箱子里、为什么运输要装到集装箱里?保护、统一规格、货运船的集装箱上、放上去不大不小、规格都是一样的、货运船要是不装集装箱、各种东西堆在一起……劈了啪啦、都坏了不说、也没法运输啊、所以为了东西的安全、和便于运输、要装箱!

        (为什么拆箱?)呵呵……你搬家、东西都装在箱子里、要想用、不丫得拆开箱子啊! = =

编程的角度:为了类型安全、解决类型不匹配报错。


实际应用:


         1 装箱 :

               所谓装箱就是吧值类型打包到Object引用类型的是一个实例中。比如整形变量 i  被“装箱”被赋值给对象O

                        int i = 123;

                        object o = (object)i ;boxing

          2拆箱:

                所谓拆箱就是从对象中提取值的类型。此例中对象o拆箱并将其赋值给整形变量 i

                        o = 123;

                        i  = (int) o ;//unboxing


           缺点:拆装箱需要大量计算、就好像搬家、装箱跟拆箱耗费人力物力一样、但是搬家必须拆装箱、编程在某些地方为了安全跟避免报错、也要用。




泛型 


        首先说书上只讲了一点泛型、只应用了集合、其实泛型可以应用到接口、类方法、事件和委托、我也查了相关资料不太理解泛型、这只针对集合来说下泛型、大家不懂也没关系、因为Old子也不懂!额 = =


        理解:

              泛型让我想到了泛化、泛是广泛的意思、就是大、型就类型、连起来就是大的类型、上边不是说到集合每一个元素类型都不一样么、这会导致一些错误、泛型集合就是在像集合里输入元素时候、限制元素的类型、比如集合只能输入string类型的元素、这佯做不必对元素进行装箱(我也不知道为毛要装箱)、既安全、又效率


             如果把集合比作一个装糖的盒子、能装好多种糖、那么泛型集合就是一个只能装大白兔奶糖、或者是说只能装一种类的糖、糖分了类、便于卖对吧、泛型集合只能输入特定类的元素、这样也便于处理。


实际操作:


      1 增加泛型集合命名空间

               using System.Collections.Generic;


       2 具体代码         


前提 有一个Animal动物类 Cat和Dog都是集成于动物类的


如果输入其非Animal动物类的就会报错、从而达到类型安全。



我亲爱的粉丝们、虽然面向对象基础还有一篇博客就要完结了、但是我会继续退出设计模式的解读、尽请期待!



——————————这博客写了9个泛番茄……查了N多资料————————

———chenchen———


0 0
原创粉丝点击