面试遇到的问题,当时回答的不是很好,再查询一些资料后,把自己的心得写下来
定义:泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候进行。
这是泛型的基本定义,泛型可说是自.NET 2.0中推出的众多特性中相当重要的一个,它解决了原先无法避免的容器操作的装箱、拆箱问题。
和.NET的众多类型一样,带泛型参数的类型同样是一个确定的类型,在不被指定的情况下,它直接继承自Syste.Ojbect类型,并且可以派生出其他类型。但是,泛型类型还是和普通类型有着一定的区别。通常泛型的类型被称为开放式类型,.NET的机制规定开放式类型不能被实例化,这样就确保了开放式类型的泛型参数类型在被指定时前,不会被实例化成任何对象(事实上.NET也没办法进行实例化,因为不确定需要分配多少内存给开放式类型)
.net中可以使用 GetType 方法可於程序运行时得知泛型及其类型参数的实际类型,更可以运用反射编程。
1、泛型是种占位符,你可以先分配位置,但不指定对象。等到需要时候根据具体情况再实例化方法。可以制作模板
2、泛型是种容器,实例化泛型类的时候就知道里面对象类型,取出对象时不需要转换。