最近开始学习C#。。 里面得对象跟集合还有泛行 头都搞大了。。  太多东西 脑子一下不好使 。
    谁能用通俗点得语言帮我解释一下泛行具体得作用 跟他得定位。。 就是什么情况下用比较好!
     我买得是本外国得书翻译过来得 他写得太专业化。。

解决方案 »

  1.   

    http://topic.csdn.net/u/20090622/21/df7f7b8a-61cd-4c8f-a964-0fe15377523d.html
      

  2.   

    采用比喻的方法:有两个仓库(内存空间)存放原材料,一个加工车间CPU
    A仓库和车间的距离比较近,存放值类型数据
    B仓库和车间的距离比较远,存放引用类型的数据车间进行生产的时候,到A仓库拿材料比较快,因为距离短但有时候有这种情况(装拆箱):
    int i=10;
    object o=i;
    本来10(值类型)这个内容在A仓库的,变为object(引用类型)后被放到B仓库了。
    这就相当于把A仓库的材料搬到B仓库,车间要用材料的时候跑了远路了比如以前的非泛型List里面的对象都是object引用类型,把int,struct等值类型的数据也往里面装,就相当于把A仓库的材料搬到B仓库去了,车间加起工来要跑远路取材料
    比如用一个非泛型的List ,要加工的时候,所有材料都要到B仓库去取了,因为List是object引用类型的,即使里面装的都是int 值类型的东西(完全可以放在A仓库的)。现在的泛型,就是一种强类型,泛型List<int>只能存放int类型,强行规定了A材料只能放在A仓库,B材料只能放在B仓库强类型的另一个好处是在敲代码的时候打一个点就有提示,不容易出错。
    比如list<Form>[0]. 就能点出Form类型的所有公共的方法属性事件如果用以前的非泛型,List[0]. 这个点就点不出东西
      

  3.   

    泛型的好处:void Add(int i){}
    void Add<T>(int i)where T:Struct{}//这两个方法因为第二个泛形而显得更加灵活好用比如碰到这种情况:var somedata=int[]{1,0.3f,22,36.23f,0};
    现在你就不能用Add(int i)了但你却可以用Add<T>这个这样用
    foreach(var item in somedata)
          this.Add<float>(item);
      

  4.   

    纠正下,上面void Add<T>(T t)where T:struct{
      //...
    }
      

  5.   

    集合中的List比较常用。就跟vb中的动态数组差不多。注意List使用之前也要实例化。
      

  6.   

    如果使用过C++,就会发现,在.NET中,所有的泛型基本上都是相同的