C#之代码优化

一、if和swith:编程

  区别:一、if语句会执行屡次判断,增长CPU的消耗,效率较低;switch只判断一次,效率较高数组

     二、if表示的是一个范围,switch表示一个点框架

二、for和foreachide

  foreach:每变量一次就会生成一个额外的堆变量,每一个变量占4个字节,用完后会销毁掉,GC会增大,所以尽可能少用foreach函数

三、string和stringbuilder工具

  string:会生成一个对象ui

  stringbuilder:只产生一个对象,不会产生大量的 GC指针

四、内存: 对象

  栈:只要是new出来的引用类型和全局变量区,都在堆上;其余的都在栈上;Struct是值类型继承

  堆:只要是new出来的引用类型,都在堆上;

  全局变量区:static

  代码区:

五、数组

  一、线性顺序存储

    int[] tmpArr:这种数组在硬盘上的存储是线性顺序存储,在硬盘上产生线性顺序连续的存储空间,读取速度快,赋值效率高

  二、线性链式存储:增删效率高

    一、list<int> tmpList:

    二、ArrayList tmpArrList:能存储值类型,引用类型

      效率较低:tmpArrList.Add(3):装箱操做

           装箱:将值类型转换为引用类型

           int tmpInt=4,object tmpObj =(object)tmpInt,int temptwo=(int)tmpObj

           拆箱:从引用类型转换为值类型

    三、Dictionary tmpDict:里面存的是键值对

          一、是List<>的延伸   tempDict.Add(key,value)

          二、能够用两个数组来代替,一个数组存key,一个数组存value,不过要肯定长度

六、Oop(面向对象编程):

  找对象----->面对对象编程(拆)----->框架的思想(标准化流程)------>工具开发

  1.继承:

    类:一个问题一个类

    继承:子类实例化的时候,先调用父类的构造函数,而后才调用子类里的构造函数,就是分配了两块内存(父类的内存和子类的内存),

       在析构的时候,先析构父类,再析构子类

    多态:父类的指针指向子类,而调用子类的方法

        Parent tmpParent = new Son();tmpParent.Update();调用的是子类里面的Update的方法

        内存的角度分析:父类中是virtual  void Update 子类里是override void Update

                虚函数表:

                  只要是带virtual的这种类,系统就会自动分配一个虚函数表的结构(Key(函数Update)和Value(函数Update的地址)的格式)

                  子类调用方法的时候,指针将父类的方法覆盖了

七、ref

    表示参数的地址和传进的变量地址一致

相关文章
相关标签/搜索