泛型集合和普通集合的异同??????????

解决方案 »

  1.   

    以Dictioary为例:
    表现形式上:
    Dictionary<T,V>
    Dictionary
    功能:
    Dictionary只能存储object对象,所以编译器在编译的时候无法确凿的知道到底存的什么类型而无法生成具体的确切的存取指令,只有在你真正取的时候才知道。那么netframework平台就采用一种叫投射或者拆装箱的方式来处理。当把引用对象存进去的时候,取出来的时候就需要做投射,把值类型存进去,就需要装箱,取出来就需要拆箱。
    泛型其实是C#一种语言特性,比如Dictionary<T,V>,你在编写程序的时候根据需求来决定确定的数据类型,当编译程序的时候,编译器会根据你定义的类型来生成不同的具体存取方式指令,这样就不需要做投射或者拆装箱了。这样能提高程序运行效率。
      

  2.   

    俺也这么认为。对于数值型数据尤其管用,性能提高显著。同时,在编译时也容易发现错误。例如:
    ArrayList array = new ArrayList();
    array.Add(obj);
    其中的Add()方法可以添加任何object,那么在使用array元素时,必须把该object转换成实际的对象才可以使用。List<int> = new List<int>()
    取出的元素不需要转换,就是整数了。类对象也如此。
      

  3.   

    此时的Add()方法就只能添加整数了。