什么是泛型?
泛型,我的简单理解为是所有类型的抽象类,任何类型都是泛型的子类。
例如:假如让你做一个最简单的方法,把传入的int类型的数字进行打印,你也许会这样做:
<span style="white-space:pre"> </span>public void print(int input)
{
Console.Write("输入的是" + input);
}
如果再让你添加一个方法, 把传入的string类型字符串进行打印,你也许会这样这样做:
<span style="white-space:pre"> </span>public void print(string input)
{
Console.Write("输入的是" + input);
}
如果再让你添加一个方法,把传入的byte类型的整数进行打印,也许你还会再写一个和上面类似的方法。
但这样如果要求你实现把传入的所有类型的值进行打印,那么方法就会太多了,而且都很类似,就差类型不同,别的都是一样的,这样的工作实在是没有意思。
如果使用泛型的话,只需要一个方法就可以实现传入所有类型的值进行打印。如下:
<span style="white-space:pre"> </span> public void print<T>(T input) {
Console.Write("输入的是" + input);
}
为什么使用泛型?
使用泛型,可以帮助我们更好的进行抽象与封装,在底层的开发中大量应用……
泛型与泛型集合
如果不使用泛型那么则这样处理数据:
<span style="white-space:pre"> </span> ArrayList list = new ArrayList();
int size = 3;
for (int i = 0; i < size; i++) {
list.Add(i);
}
for (int i = 0; i < size; i++)
{
int value =(int) list[i];//这里需要强转类型
string value1= (string)list[i];//编译没问题
Console.Write(value);
}
如果使用泛型的话,则会这样处理:
<span style="white-space:pre"> </span> List<int> listInt = new List<int>();
int sizeInt = 3;
for (int i = 0; i < sizeInt; i++)
{
listInt.Add(i);
}
for (int i = 0; i < sizeInt; i++)
{
int value = listInt[i];//这里不用写类型
string value1 = (string)listInt[i];//编译有问题
Console.Write(value);
}
泛型在集合中的使用避免了隐式的拆装箱,也带来了数据安全,对数据的处理也更加迅速。