无论是封装,继承,多态还是泛型,目的只有一个,减少代码量,增加重用率,使得代码更简洁,更高效。
泛型在定义的时候不需要声明具体的数据类型,但是使用时,必须明确数据类型,
//泛型类,泛型方法,泛型委托,
//泛型T T:表示可能的数据类型。
下面先写一个不用泛型的话写的代码:
让控制台分别输出整形,字符串类型和 doubel 类型要写三个方法
static void Test(int n)
{
Console.WriteLine(n);
}
static void Test(string s)
{
Console.WriteLine(s);
}
static void Test(double d)
{
Console.WriteLine(d);
}
下面写一个泛型方法:
static void Test<T>(T t1)
{
Console.WriteLine(t1);
}
static T Getscore<T>()
{
while (true)
{
try
{
T score =(T) Convert.ChangeType(Console.ReadLine(),typeof(T));//用Convert万能转换里的ChangeType方法,将object类型转换为T类型,
{
dynamic n = score;//
if (n > 0 && n < 120)
{
return score;
}
else
{
Console.WriteLine("数值超出范围请重新输入");
}
}
}
catch (Exception)
{
Console.WriteLine("数值格式不正确请重新输入");
}
}
}
在main 方法里调用以上方法对比可以看出泛型更简洁
Test(10);//调用方法的重载
Test("你好");
Test<int>(10);//调用泛型方法
Test<string>("你好");