分类: C#/.net
2013-03-04 08:33:49
既然泛型是新增加的特性,那来看一个比较运算的例子,在没有泛型之前怎么来处理的
比较运算小例子:
整数比较:
如果还想要浮点数比较怎么办?有人就说了,“白痴啊,这么简单问题还用想?在建一个方法不就行了“。这位仁兄只能对你句抱歉,不能这么做,因为这不符合面向对象三大特性之一,多态的概念,难道你忘了吗?
那使用object 不就解决了这个问题吗,他是所有类型的基类,用他来做数据的类型我想应该没什么问题了?
使用object的例子做加法运算的例子:
那位仁兄得意的笑了笑发话了:“嘿嘿,艾玛,这太完美了,我们仅用object就轻易的实现了多态,完美,完美实在是完美”。抱歉…. object 不支持比较运算符,在这里就算她支持,我们来分析一下。实际问题永远比你想象的复杂。使用object看似没有问题,其实在背地里给系统埋下了一颗无形的炸弹。你想如果传一个值类型
数字或浮点型进去,程序在执行时会执行装箱操作,处理完后,我们可能要数据做其他的事情继而需要拆箱,这一装一拆的瞎折腾系统的性能还能好吗?仁兄大惊:“这还了得,不能这样搞,那还有什么办法啊??“
“听说c# 引入了新特性泛型可以解决这个问题,要不咱们去看看?”,仁兄:“是吗?行 那还楞啥,走起~”
我们已经意识到,c# 2.0
泛型所带来的优势。仁兄:“那她究竟长神马样子啊??”,“你看你急的,又不是娶新娘子。马上就到了哈,等我们一起把她神秘的面纱揭开看看就知道啦哈“,仁兄:“必须的,这个得让我来揭”,“行行行!不和你争”。
仁兄:“哎呦妈呀,累死我了,终于到了,这泛型还挺有个性的,蒙个蓝色面纱,里面究竟藏啥了…“。我发话了:“真墨迹啊你,快快快,赶紧动手,揭开她的庐山真面目,让咱一探究竟。小心下手,别鲁莽,弄伤了人家还要上医院啊”。
揭开她华丽的面纱:
仁兄满脸疑惑的望着泛型:“这T,where 都是啥呀,T 貌似还在哪见过?”。“是哎,有点眼熟。嘘 ……别动….听听,有动静,哇啊啊,原来悟道哥也在这儿
,你怎么有空跑这来转悠“。
仁兄:“什么情况????”。
神出鬼没的悟道哥就像一本百科全书,啥都知道,他的名字在江湖上无人不知无人不晓,。
悟道哥:“嘿嘿,我已在在这等候你们多时,这泛型长的很抽象,知道你们没见过世面,我是来给你俩讲解泛型的。
“。我:”谢谢悟道哥现身指点,老长时间没看望你了,改天一定给你带点特产过去!“。
悟道哥:“哎呦~~不要这么客气,给我带两包珍藏的烟就行~~ “。
悟道哥现身说法:
T是一种数据类型,对系统来说是一种暂时性未知数据类型,Min
我:“讲的可真详细,我俩笨拙,还得细细品味。我们先走一步,去和仁兄试试看哈,悟道哥我俩先撤了!“。
悟道哥:“恩。记得我的那个啥啊,你懂的“。
我:“啊???哦…..我懂的我懂的… 这个是必须的,你就慢慢等吧…..”。
悟道哥:“嘿嘿,现在你们只是初探泛型方法,实际上他还有个爸爸 泛型类(classs 、interface)。来来来…..给你们一个锦囊,切记..切记,一定要等到认识她爸再打开!“。说完悟道哥便消失丛林中。。。。
这家伙真奇怪,我们赶紧试下使用泛型如何: