泛型可以理解为广泛的类型,或者不确定的类型,也就是说允许我们编写一个可以与任何数据类型同时运行,且不报错的方法或者类。
泛型类
泛型类是指这个类的某些字段的类型是不确定的,只有在构造的时候才能确定下的类。
泛型类示例
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;
}
泛型方法的示例
public static Type GetT<T>(T a)
{
return a.GetType();
}
static void Main(string[] args)
{
Console.WriteLine(GetT(1));
Console.WriteLine(GetT(0.4435f));
Console.WriteLine(GetT("sssss"));
}
结果为:
System.Int32
System.Single
System.String
上述方法为查看数据类型的Type的方法,用来检验,传输类型是否正确。
注意
泛型类和泛型方法都是我们在构造或者调用的时候声明类型,如果要是我实际遇到的问题中有两种同时存在的不确定的类型呢?
答案:可以同时声明两种泛型在同一个类或者方法中
我们对上面的泛型类的泛型方法进行改造,结果如下:
泛型类:
class MyClass<T,A>//两个泛型,数据类型可以不同了
{
private T a;
private A b;
public MyClass(T a,A b)
{
this.a = a;
this.b = b;
}
}
泛型方法:
public static String GetT<T,A>(T a,A b)
{
return a + "" + b;
}
注意:泛型不一定用大写的字母T来表示,其它的也可以,但是T被广泛应用,也推荐大家使用T。
欢迎评价和指正, 谢谢。