读书笔记——More Effective C#(1)
一、使用泛型
1、什么是泛型
泛型的C#2.0提出的新语法。在编程时,经常会遇到功能非常相似的模块,只是处理的数据不一样,使用泛型,用同一个方法来处理传入不同种类型参数。使用多个引用类型参数的泛型类型并不会影响程序的内存占用,因为其被JIT编译后只生成一份代码,若是泛型类型中包含值类型作为参数,被JIT编译后会生成不同代码。
引用类型:数组,用户定义的类、接口、委托,object,字符串,null类型,类。引用类型的变量持有的是数据的引用,数据存储在数据堆,分配在托管堆中,变量并不会在创建它们的方法结束时释放内存,它们所占用的内存会被CLR中的垃圾回收机制释放。
值类型:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型。值类型的变量直接存储数据,分配在托管栈中,变量会在创建它们的方法返回时自动释放。
例如:
//实例化代码在运行时的机器码完全相同
List<string> stringlist = new