前言:本博文从C#泛型入手,依次介绍泛型类和泛型方法,如果读者想对泛型有更多的了解,可访问本人另一篇博文:C#中List泛型用法,必知必会!
一、泛型是什么?
泛型可以理解为广泛的类型,或者不确定的类型,也就是说允许我们编写一个可以与任何数据类型同时运行,且不报错的方法或者类。
泛型通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。
二、泛型类的定义
定义一个泛型类就是指的是:定义一个类,这个类中某些字段的类型是不确定的,这些类型可以在类构造的时候确定下来,举例:
class Program
{
static void Main(string[] args)
{
MyClass<int> mc = new MyClass<int>(12,34);
}
}
class MyClass<T>
{
private T a;
private T b;
public MyClass(T a,T b)
{
this.a = a;
this.b = b;
}
}
在构造的时候,声明这个类中的字段为int类型,并转递对应的参数。
三、泛型方法定义
定义泛型方法就是定义一个方法,这个方法的参数的类型可以是不确定的,当调用这个方法的时候,再去确定方法的参数的类型,如下:
public static T GetT<T>(T a)
{
return a;
}
通过上面这个例子,可以看出,泛型方法与泛型类类似,方法的返回类型和参数类型都可以使用泛型。下来,就通过一个案例,感受一下:
internal class Program
{
public static Type GetT<T>(T a)
{
return a.GetType();
}
public static void Main(string[] args)
{
Console.WriteLine(GetT(10));
Console.WriteLine(GetT(0.23f));
Console.WriteLine(GetT("Hello"));
}
}
上述方法为查看数据类型的Type的方法,用来检验,传输类型是否正确。
注意:我们也可以同时声明多种泛型在同一个类或者方法中。在调用时,我们传入相应的值就可以了(可以传多,不能传少)。