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

    表示參數的地址和傳進的變量地址一致

相關文章
相關標籤/搜索