1.泛型类的定义
1.泛型是什么?
通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。
2.泛型类定义
定义一个泛型类就是指的是,定义一个类,这个类中某些字段的类型是不确定的,这些类型可以在类构造的时候确定下来,举例:
创建一个类处理int类型和double类型的相加
class ClassA< T >
{
private T a;
private T b;
public ClassA(T a,T b)
{
this.a = a ;
this.b = b;
}
public string GetSum()
{
return a+“”+b;
}
}
例子:
namespace 泛型和泛型类
{
class Program
{
static void Main(string[] args)
{
var o1 = new ClassA<int>(12,34);//当我们利用泛型类构造的时候,需要指定泛型的类型
string s = o1.GetSum();
Console.WriteLine(s);
Console.ReadKey();
}
}
}
namespace 泛型和泛型类
{
class Program
{
static void Main(string[] args)
{
var o2 = new ClassA<string>("wwww","xuexi.com");
Console.WriteLine(o2.GetSum());
Console.ReadKey();
}
}
}
2.泛型方法
定义泛型方法就是定义一个方法,这个方法的参数的类型可以是不确定的,当调用这个方法的时候再去确定方法的参数的类型。
实现任意类型组拼成字符串的方法
public static T GetSum< T >(T a,T b)
{
return a+""+b;
}
GetSum< int >(23,12);
GetSum< double >(23.2,12);
例子1:
namespace 泛型方法
{
class Program
{
public static string GetSum<T>(T a, T b)
{
return a + "" + b;
}
static void Main(string[] args)
{
Console.WriteLine(GetSum(12,34));
Console.WriteLine(GetSum(12.3,34.5));
Console.WriteLine(GetSum("xuexi","haonan"));
Console.ReadKey();
}
}
}
例子2:
namespace 泛型和泛型类
{
class ClassA<T,A>//(两个类型)T代表一个数据类型,当时用ClassA进行构造的时候,需要制定T的类型
{
private T a;
private T b;
private A c;
public ClassA(T a, T b)
{
this.a = a;
this.b = b;
}
public string GetSum()
{
return a +""+ b;
}
}
}
namespace 泛型和泛型类
{
class Program
{
static void Main(string[] args)
{
var o2 = new ClassA<string,int>("wwww","xuexi.com");//<string,int>后边的int是为我们定义的A指定类型
Console.WriteLine(o2.GetSum());
Console.ReadKey();
}
}
}
例子3:
namespace 泛型方法
{
class Program
{
public static string GetSum<T,T2,T3,T4>(T a, T b)
{
return a + "" + b;
}
static void Main(string[] args)
{
Console.WriteLine(GetSum<int,int,int,int>(12,34));
Console.WriteLine(GetSum<double,double,double,double>(12.3,34.5));
Console.WriteLine(GetSum<string,string,string,string>("xuexi","haonan"));
Console.ReadKey();
}
}
}