一.为什么要提出泛型的概念
我们在声明对象或者方法中,对象中成员变量的定义或者函数参数都传递都要指定具体的对象类型,但是有的时候参数的类型是变化的,但是实现的功能却又差不多,这个时候我们就想,是否存在一种东西可以将参数的位置“占住”,当传递具体的对象类型是再用这个类型取替换被占住的位置,这个时候就提出了泛型的概念,是不是有点绕,但是看完下面的例子就清除这里表达的内容了,泛型有多种表现形式,泛型类,泛型方法,泛型集合,泛型委托,可以说不懂泛型就没有真正的了解C#,下面让我们来开始泛型的学习吧。
二.泛型类,泛型方法
我们先举个例子,我们定义一个类来模拟入栈出栈操作,我们操作出栈入栈时要针对各种数据类型,int型,double 型,字符型......总之各种类型都有可能,我们不可能针对每个类型都写一个类来操作出栈入栈,这显然是不现实的,这个是时候就该泛型大显身手发时候了,看下面的定义:
我们在 public class MyStack 后面加了一个这个时候这个类就变成了一个泛型类,表示一个占位符,当我们实例化该类的时候需要传入具体的数据类型,我们来看一下泛型类的具体用法:
public int[] arrayInt = new int[6];public string[] arrayStr = new string[6];
MyStack<int> objMyIntStack = new MyStack<int>(6);
MyStack<string> objMyStrStack = new MyStack<string>(6);
这样泛型类就可以操作int 类型 和 string类型进行出栈入栈操作但代码却不需要改动。
三.泛型集合
使用泛型集合首先是是加了类型安全,方便编程,泛型集合指定了类型后只能将同类型的参数放入集合,泛型集合最常用就是List集合和Dictionary集