一、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
表示参数的地址和传进的变量地址一致