c#泛型----简单讲讲如何在编程中使用泛型及其集合类

来源:互联网 发布:网络鉴定古董 编辑:程序博客网 时间:2024/05/22 08:07

           区分一个优秀的编程人员标准有很多,无疑会不会使用泛型也是其中一个标准。为什么。原因很简单,使用泛型,使你的代码更精简更高效。不信,请看下面介绍的泛型的三大好处。

          讲之前,先说说,什么是泛型。顾名思义,就是比较广泛的数据类型。没错,泛型是数据类型的一种通用的表达方式,它可以代表任何一种数据类型。

 

         (一)泛型好处一:减少代码的重复性,或者说提高了重用性。

          例如:如果要定义一个交换函数,你要考虑要交换的数据的类型,可以是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做数据源),把学到的内容串一串。代码如下:

 

 

             运行结果图:

 

              这里讲完了,希望对大家有用!有机会,继续讨论泛型更深入的应用。