区分一个优秀的编程人员标准有很多,无疑会不会使用泛型也是其中一个标准。为什么。原因很简单,使用泛型,使你的代码更精简更高效。不信,请看下面介绍的泛型的三大好处。
讲之前,先说说,什么是泛型。顾名思义,就是比较广泛的数据类型。没错,泛型是数据类型的一种通用的表达方式,它可以代表任何一种数据类型。
(一)泛型好处一:减少代码的重复性,或者说提高了重用性。
例如:如果要定义一个交换函数,你要考虑要交换的数据的类型,可以是int,double,string等等。那么,如果你不懂得泛型,就得写n个交换函数了,类似于重载。如下:
如果使用泛型,只需要一个就可以,如下:
代码是不是少了很多。这也是那么多人喜欢用泛型的原因:偷懒哦。
(二)泛型的好处二:减少繁复的装箱拆箱操作,提高代码的效率性以及避免装箱拆箱过程中的风险性。(所谓的装箱和拆箱,简单地说,就是值类型与Object类型间的相互转化)
例如:拿ArrayList集合做个例子(或许你看过这个例子,其实就是那个例子,这里抄袭下,偷偷懒)
box操作就是装箱,具体过程是把值类型从栈中弹出,放入堆中,同时把在堆中的地址压入到栈中,频繁出现这样的操作,成本比较大。如果使用泛型,那么就避免了装箱拆箱的麻烦,因为已经明确好它的类型,类似数组的定义,等把数据从栈中拿出来,也就没必要拆箱了。代码如下:
(三)泛型的好处三:提供了一系列泛型集合类,方便了平时的编程,提高了效率,减少了代码量。下面给出几个常用的泛型集合类及对应的非泛型集合类。(手打的,或许有错,别介意)
泛型集合 | 非泛型集合 | 泛型集合用法举例 |
List<T> | ArrayList | List<string> list1 = new List<string>(); |
Dictionnary<TKey,Tvalue> | Hashtble |
Dictionary<int,string> dictionary1 = new Dictionary<int,string>(); dictionary1.Add(1, "bookName1"); |
Queue<T> | Queue |
Queue<string> queue1 = new Queue<string>(); queue1.Enqueue("one"); |
Stack<T> | Stack |
Stack<string> stack1 = new Stack<string>(); s.Push("a"); s.Pop(); |
SortedList<TKey,TValue> | SortedList |
SortedList<string,string> sortedlist1 = new SortedList<string,string>();sortedlist1.Add("one", "Tom"); sortedlist1.TryGetValue("two", out value); |
这里举个应用的例子,例如使用SortedList<TKey,TValue>泛型集合类,它是对插入里面的数据按关键字排序,及按TKey排序。代码如下:
输出结果为:
(四)最后,通过展示一个泛型在数据数据库编程应用的实例(使用Access做数据源),把学到的内容串一串。代码如下:
运行结果图:
这里讲完了,希望对大家有用!有机会,继续讨论泛型更深入的应用。