欢迎来到天天文库
浏览记录
ID:46283368
大小:86.50 KB
页数:4页
时间:2019-11-22
《C#泛型的运用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、at中的泛世应用◎学习C#的时间不氏,接触泛型也就不到一个周的时间.所以看过不少高人写的文章加上自己了解的一知半解,写到这上面.我想无论怎么说,只要在编程的时候你将泛型应用到自己的程序中,即使你根木不知道IH己为什么要用它,我想这也代表你想更深入的了解C#的编程,而并不满足将自己的程序只写到if....else的程度.不过这并不意味着你会使用泛型就是髙手了,这里只是说明泛型是髙手们都喜欢用的东西.言归正传泛型在我理解就好比是一个袋了,对以装下任何东西.我们当然不希望用这个袋了又装好吃的乂要装垃圾.打一个更形象的比方,去
2、超市买一包饼干,当你结帐的时候服务员会给你一个袋子装这包饼干.但是对丁•我们來说饼干与饼干的包装袋都装到了这个人袋子里,而饼干是我们所需要的,包装袋子就是垃圾.这时就会引出一个概念,“装箱、拆箱“.将包装袋装饼干的过程就叫”装箱",而我们拆包装吃饼干的过程叫”拆箱".显然这对于吃饼干來说是非常浪费时间的.所以我们可能会需要一个可以做白我提示的袋了,也就是说如果你想用这个袋了来装饼干,那么你用它來装糖果,它就会白动提示你,它已经被你指定成装饼干了.上面的例子虽然不太贴切,但是对丁理解泛型还是冇些帮助的.大概有以下儿个集合
3、类型:1.List,这是我们应用最多的泛型种类,它对应ArrayList集合。2.Dictionary,这也是我们平时运用比较多的泛型种类,对应Hashtable集合。3.Collection对应于CollectionBase4.ReadOnlyCollection对应于ReadOnlyCollectionBase,这是一个只读的集合。5.Queue,Stack和SortedList,它们分别对应于与它们同名的非泛型类。看一下这个类:publicclassPersoncollection:IListprivateArr
4、ayList_Persons=newArrayList();publicPersonthis[intindex]{get{return(Person)_Persons[index];}}6IpublicintAdd(Personitem)8I_Persons.Add(item);return_Persons.Count一1;10I-}publievoidRemove(Personitem)12-r1{_Persons.Remove(item);}14IobjectIList-this[intindex]15申{16^1
5、71819I20申intIList.Add(objectitem){returnAdd((Person)item);}2122voidIList.Remove(objectitem){Remove((Person)item);}get{return_Persons[index];}set{_Persons[index]=(Person)value;}232425L}2627这个类是Person类的操作类,可以自由的增加或删除Person类.如果现在要为其他的类写一个功能与这个类一样的操作类,相信只需耍将%rson类替换
6、一下就可以了•不过在了解泛型之后你就可以这样来用.Listpersons=newList();persons.Add(newPerson());Personperson二persons[0];比如,如果耍将Person类换成Employee类,只需耍像这样写.Listemployees=newList();employees.Add(newEmployee());Employeeemployee=employees[0];List是C#中已经定义好
7、的泛型类,现在我们可以口己定义它.1publieclassTypeHelper23曰{4I5申publieStringGetType(Tt){6I7Ireturn"Typeis”+t・GetType()・toString();8卜}9L}1011这里的T只是一个类型的占位符,在实际应川的吋候,将实际的类型替换掉T就可以.TypeHelpertypeHelper=newTypeHelper();typeHelper.GetType(Person);注意T只是一个占位符,实际上换上任何符号都可以,千万
8、不要任为只有TnJ以做占位符.冇的时候我们必须要约束一下实际的类型,比如以下的泛型类.publieclassCollectionHelper23曰{4l5I6I7自8I9I10I11F12L}privateTCollec=newT();publieintIndexOf(Vv){returnCollec.IndexOf(v
此文档下载收益归作者所有