我们为什么用泛型编程-.NET

1.先在前面说说为什么要用泛型来进行编程

      通常我们在编程的时候,经常会遇到2个模块的功能都是一样的,只是它接收的参数不同,一个可能是int类型,另个可能是个string类型,或者是你自定义的数据类型

     eg:public void GetDatas(int aa){}

          public void GetDatas(string aa){}

 就因为这样,我们在写处理的方法的时候就会写2个或者多个方法来进行处理。

      那现在我们就会这样想,有没有一个通用类型来代替int,string或你自定义的数据类型呢,那现在我们不就可以节约很多的代码量,把两个方法结合起来,泛型的出现那就是专门来解决这个问题的。这就是为什么要用泛型来进行编程的原因。我并没有说编程就一定要用泛型,也许有时候泛型编程起来会遇到些麻烦,只是还没碰到过那样的麻烦而已。好了,就写这里吧!

 

2.看例子演示

.NET2.0中新添加了不少特性,其中重要的就是对泛型的支持。

对泛型的支持包含在 System.Collections.Generic  命名空间中,看以下一个简单的例子:

Code

 

此程序在运行过程当中会出现运行时错误:al.Add("hh");  无法进行类型转换。而我们经常需要的是在编译期间发现错误,而不是把错误带到运行期间,这样,安全性得不到保证。


下面的程序:

Code

 

此程序在编译期间不能通过,原因与上面的一致。但是在程序运行之前就可以发现错误。这正是我们所希望的。
在.NET中,所有的类型都单继承子OBJECT,我们经常要对返回的OBJECT类型进行强制转换,转换成为我们所希望的类型,例如:
 return (PetShop.IDAL.IProduct)Assembly.Load(path).CreateInstance(className);
该句在运行时动态加载程序集,同时创建了一个实例化的对象,但是最终强制转化返回一个接口对象。
一般在强制转换的过程当中是不安全的,因为OBJECT对象可以随便转换为你想要的任何类型,所以使用泛型有效避免了转换过程中的不安全性。
其次,在将简单的类型封装位OBJECT类型进行传递时,伴随这装箱和拆箱的操作,而这两个过程都会对性能造成很大的影响,但是使用泛型,没有了这个繁琐的过程,完成的是相同的功能,但是性能得到了提升。

posted @ 2009-05-10 16:56  Matt.com  阅读(333)  评论(1编辑  收藏  举报