通过自己的认识,泛型是为了防止重复的变成,比如一个方法,参数是int类型,这个时候当你需要再写一个功能相同,但是是关于string类型的。有人想到用object的装箱和拆箱操作实现,但是不安全。
泛型的特点: 更强的类型安全,更好的复用,更好的效率,更清晰的约束。
C#泛型能力有CLR在运行时支持:C#泛型代码在编译为IL代码和元数据时,采用特殊的占位符来表示范型类型,并用专有的IL指令支持泛型操作。而真正的泛型实例化工作以“on-demand”的方式,发生在JIT编译时。
Demo:

Code
namespace LearningDemo
{
class Stack<T>
{
private T[] store;
private int size;
public Stack()
{
store = new T[10];
size = 0;
}
public void Push(T x)
{
store[size++] = x;
}
public T Posh()
{
return store[--size];
}
}
class DemoGeneric
{
public static void Main()
{
Stack<int> intStack = new Stack<int>();
intStack.Push(17);
Stack<String> stringStack = new Stack<String>();
stringStack.Push("abc");
Console.WriteLine("The int stack push is {0}", intStack.Posh());
Console.WriteLine("The string stack push is {0}", stringStack.Posh());
}
}
}
其实可以理解为一个参数。你传入的是int就是int ,传入string就是string。