zoukankan      html  css  js  c++  java
  • C#之代码优化

    1、if和swith:

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

         2、if表示的是一个范围,switch表示一个点

    2、for和foreach

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

    3、string和stringbuilder

      string:会生成一个对象

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

    4、内存: 

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

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

      全局变量区:static

      代码区:

    5、数组

      1、线性顺序存储

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

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

        1、list<int> tmpList:

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

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

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

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

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

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

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

              2、可以用两个数组来代替,一个数组存key,一个数组存value,不过要确定长度

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

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

      1.继承:

        类:一个问题一个类

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

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

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

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

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

                    虚函数表:

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

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

    7、ref

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

  • 相关阅读:
    微信公众号的开通
    支付宝同步请求检查appid,以及公钥,私钥是否正确
    检查支付宝异步通知是否正确
    支付宝开发者中心添加应用
    js中undefined和null的区别
    判断前端<input>标签是否选中(批量删除时,批量选择复选框)
    P1396 营救+二分+BFS
    P1396 营救+生成树
    P1396 营救+最短路
    P1195 口袋的天空
  • 原文地址:https://www.cnblogs.com/xingyunge/p/7601540.html
Copyright © 2011-2022 走看看