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

时间:2021-02-05 17:00:54

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

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

 

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

          例如:如果要定义一个交换函数,你要考虑要交换的数据的类型,可以是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排序。代码如下:

输出结果为:

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

 


             (四)最后,通过展示一个泛型在数据数据库编程应用的实例(使用Access做数据源),把学到的内容串一串。代码如下:

 

 

             运行结果图:

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

 

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