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++模板基于“签名”的隐式约束所具有的高灵活性。
以上内容转自他处,旨在交流学习。
关于泛型平时用得较少,个人的理解也很有限,更多高级的用法有待深入探究。