C#的泛型编程

泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活复用。

例子代码:
class Program
{
     static void Main(string[] args)
     {
           int obj = 2;
           Test<int> test = new Test<int>(obj);
           Console.Write("int:"+test.obj);

           string str = "hello world";
           Test<string> test = new Test<string>(str);
           Console.Write("string:"+test.obj);

           Conslole.ReadKey();
     }
}

class Test<T>
{
    public T obj;
    public Test(T obj)
    {
        this.obj = obj;
    }
}


    输出结果是:
    int: 2
    String: hello world

程序分析:

1、 Test是一个泛型类。T是要实例化的范型类型。如果T被实例化为int型,那么成员变量obj就是int型的,如果T被实例化为string型,那么obj就是string类型的。

2、 根据不同的类型,上面的程序显示出不同的值。

C#泛型特点:1、如果实例化泛型类型的参数相 同,那么JIT编辑器会重复使用该类型,因此C#的动态泛型能力避免了C++静态模板可能导致的代码膨胀的问题。2、C#泛型类型携带有丰富的元数据,因 此C#的泛型类型可以应用于强大的反射技术。3、C#的泛型采用“基类、接口、构造器,值类型/引用类型”的约束方式来实现对类型参数的“显示约束”,提 高了类型安全的同时,也丧失了C++模板基于“签名”的隐式约束所具有的高灵活性。

以上内容转自他处,旨在交流学习。

关于泛型平时用得较少,个人的理解也很有限,更多高级的用法有待深入探究。

工欲善其事,必先利其器。
原文地址:https://www.cnblogs.com/zhangzhu/p/2494972.html