一、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
表示參數的地址和傳進的變量地址一致