关于泛型
1泛型
继承:
任何类型的父类都是object object是一切类型的基类 子类继承父类的所有东西(里氏替换原则)
执行方式:
构造函数每个类都有一个默认的构造函数,一个类可以有多个构造函数,每个类在执行构造函数时(如果继承了父类)都会先执行父类构造函数再执行自身函数,这样子类就可以拥有父类的属性和方法了。
应用场景如:写个通用的泛型方法,传入一个类作为类型。这样就可以使用这个类的方法属性以及继承的一些属性和方法。
public static T Way<T>(T para) where T: People,new(){}
对象.gettype()----->获取该对象是什么类型
typeof()----typeof(int)指明里面是什么类型
gettype和typeof就是分别针对对象和类型的
声明------------泛型 <T>(T value)
延迟声明
声明static 可以直接类名.方法名无需用new就可以调用,一般公用的时候写成静态的,静态的成员信息(属性)会分配到内存的柞中(无论是int 类型 还是string类型)理论上是int 分配在内存的堆中 string 分配在内存的柞中。
类.方法名.<int>(value)这里value要对应是int型
泛型约束 where T: class,Interface,new()其中,的关系是并且的关系。是对泛型集合传入的对象的约束
泛型优点:减少代码冗余, 相对用object类型而言不会有拆箱装箱(拆箱object--》int将引用类型转化为值类型 ,装箱----》将值类型转化成引用类型)
值类型:栈从线程的堆栈中分配,不考虑垃圾回收机制,继承自System.ValueType,有两种形式:装箱和未装箱,不能作为基类,不能有虚方法,初始化时默认为0值,复制时“字段对字段”的拷贝。
引用类型:从托管堆中分配,对象考虑垃圾回收机制,所有类都是引用,只有装箱形式,可以继承和派生,引用类型变量初始化时默认为null,复制时只拷贝内存地址。