初学,一直看不明白泛型用来干嘛的?什么时候要用到,求个最简单通俗的例子加说明

解决方案 »

  1.   

    generic,其实就是通用的意思。 
    比如我们需要使用列表的时候定义了一个 StringList类用来操作字符串数组,过一段时间又需要处理整数的时候就需要再定义一个 IntegerList,处理用户的时候又需要再定义一个UserList,以后可能需要定义更多,它们的功能完全相同,只是处理的类型不一样。有了泛型以后,只需要定义一个 List<T> 就能满足所有要求,.. List<string> , List<int> , List<User>...
    没系统学习过.net,仅是自己的理解。
      

  2.   

    using System;class Test
    {
      static void Main()
      {
        Console.WriteLine(Max(1));                               // 输出: 1
        Console.WriteLine(Max(.3, -.5));                         // 输出: 0.3
        Console.WriteLine(Max(0M, -3M, 3.14M));                  // 输出: 3.14
        Console.WriteLine(Max(9f, -1f, 3.14f, -2.718f));         // 输出: 9
        Console.WriteLine(Max(0u, 23u, 3114u, 120718u, 5678u));  // 输出: 120718
      }  // 求一组数值的最大值
      static T? Max<T>(params T[] x)
      where T: struct, IComparable
      {
        if (x.Length == 0) return null;
        T a = x[0];
        foreach (T i in x)
          if (a.CompareTo(i) < 0) a = i;
        return a;
      }
    }
      

  3.   

    泛型的基本优点在于好用,数组长度是动态的;安全,指定了T的类型;减少了开销,避免了以前ArrayList或Hashtable中将object类和具体类之间相互转换所带来的开销。  
    泛型提供了一种很好的复制手段,且提高了扩展性
    泛型会产生更高的代码重用,更好的性能,强类型检查和易读的代码http://topic.csdn.net/u/20090622/21/DF7F7B8A-61CD-4C8F-A964-0FE15377523D.html
      

  4.   

    泛型类 方法 同一般的类似List<string> list=new List<string>();  //List是个泛型类 如:public class List<T> {} public class Csdn<T>
        {
            public T GetUser<T>(T t)
            {
                return t;
            }
        }
    static void Main(string[] args)
            {
                Csdn<int> cs = new Csdn<int>();
                Console.WriteLine(cs.GetUser(1));      //1;
                Console.WriteLine(cs.GetUser<int>(1)); //1;
                Console.WriteLine(cs.GetUser<string>("12"));//12;
                Console.Read();
            }
      

  5.   

    1、类型安全问题。泛型是强类型的,即编译时可以检查出类型错误;非泛型则不行;
    2、性能问题。泛型用于值类型是不需要装箱操作,而非泛型的频繁装箱和拆箱导致性能下降。基本上可以这么说,你可以放弃目前所有集合类的非泛型版本,改用泛型版本,这样你可以获得最佳性能和最好的安全性。当然凡事有利有弊,泛型唯一的缺点是生成可执行代码尺寸要比非泛型版本大一些。参见:http://msdn.microsoft.com/zh-cn/library/b5bx6xee(VS.80).aspx