什么情况下 使用泛型 为什么使用? 网上说的太具体 反而复杂难以理解,,,请高手帮忙下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我先以我的理解来回答你,然后陪你一起等更正确全面的答案. 要理解泛型,就必须了解它的前身--集合类(如:ArrayList,Hashtable,SortedList等集合).集合类是可以代替数组以便灵活管理对象组.注意这里的用词,集合类是个数组(样的东西),集合类用来存储对象,什么是对象,Object. 集合类的好处是包容性强,万物皆对象,所以他能存任何东西.然而有利就有弊,在产生便利性的同时,它也带来了处理性能损失和错误风险提高的坏处.假如对某一集合,我们存储的都是int类型的数字,由于集合类存储的是对象,所以存入时会进行装箱,将int装为object,在提取时,又会再拆箱,装箱拆箱动作不可避免带来的额外的性能开支.此外,由于集合不加分辨,可以存储任何对象,那么如果我们把int,string或其他对象混装在同一集合中,在拆箱时,也许会由于拆箱不当带来错误,例如,我们想把一个字符串"AAAAA"拆为一个int数值,自然是不被允许的. 为避免这些弊端,在Net2.0中引入了泛型.泛型其实可以理解为一个强类型的集合类.在ADO.net中,也有类似的改进,那就是强类型Dataset的引入.毋庸置疑,泛型还是个集合,不过它是个确定了存储对象类型的集合,这样,就绕过了装箱拆箱动作,也不会产生拆箱错误.可以这样认为,集合类是泛型的基类部分,泛型新引入的部分是对集合基类的多态扩展. 提前定义容器(set,list,map)里的元素的类型;在1.4的时候: list.set(index,element)你放进list里的如果是String类型,那么 list.get(index);得到的是依然是Object类型,必须通过强制类型转换 (String)list.get(index)才能得到String类型,这太不合理了到了1.5的时候: 如果你定义List<String> list = new ArrayList<String>(); 那么在list.set(index,element)你想放进非<String>类型的元素,在编译的时候就会报错; 但是换来的好处是list.get(index)不用强制类型转换也能得到本来的元素类型的值。 串口问题 datatable表查询匹配的问题,急求 如何在数据结果集中取一部分数据 不知为什么获取不到iframe里src 页面内的值 ,查了很久,没搞定。 用 HttpWebRequest 获取某个网站的登录验证码 欲合作开发一类似QQ的即时通信软件,只为学习,有意者请进.. 如何在C#.net中实现以下几个问题(初学者),谢谢大家指点 数据保存问题 高分200分求解:System.Threading.Timer问题,另100分再揭帖(在线等待) winfrom恢复sql2008数据库 C#中,如何读取Word中的文本框对象内的文字?(普通的文字和表格内的我可以读到) Socket粘包问题
集合类的好处是包容性强,万物皆对象,所以他能存任何东西.然而有利就有弊,在产生便利性的同时,它也带来了处理性能损失和错误风险提高的坏处.假如对某一集合,我们存储的都是int类型的数字,由于集合类存储的是对象,所以存入时会进行装箱,将int装为object,在提取时,又会再拆箱,装箱拆箱动作不可避免带来的额外的性能开支.此外,由于集合不加分辨,可以存储任何对象,那么如果我们把int,string或其他对象混装在同一集合中,在拆箱时,也许会由于拆箱不当带来错误,例如,我们想把一个字符串"AAAAA"拆为一个int数值,自然是不被允许的.
为避免这些弊端,在Net2.0中引入了泛型.泛型其实可以理解为一个强类型的集合类.在ADO.net中,也有类似的改进,那就是强类型Dataset的引入.毋庸置疑,泛型还是个集合,不过它是个确定了存储对象类型的集合,这样,就绕过了装箱拆箱动作,也不会产生拆箱错误.可以这样认为,集合类是泛型的基类部分,泛型新引入的部分是对集合基类的多态扩展.
在1.4的时候:
list.set(index,element)你放进list里的如果是String类型,那么
list.get(index);得到的是依然是Object类型,必须通过强制类型转换
(String)list.get(index)才能得到String类型,这太不合理了
到了1.5的时候:
如果你定义List<String> list = new ArrayList<String>();
那么在list.set(index,element)你想放进非<String>类型的元素,在编译的时候就会报错;
但是换来的好处是list.get(index)不用强制类型转换也能得到本来的元素类型的值。