参考博客c#之泛型详解
参考书籍《c#高级编程》(第七版)
1.性能
泛型在使用的过程中不用装箱和拆箱,更加节省性能。
例如List和ArrayList比较,List实用了泛型了,比ArrayList更加节省性能。
2.类型安全
泛型在使用时就规定了参数的类型,在类型上更加安全,能在编译时发现错误。
3.二进制代码的重用
泛型可以更好的重用二进制代码。泛型类可以定义一次,并且有许多不同类型的实例化。
4.命名约定
(1).无任何特殊要求
泛型类型的名称用字母T作为前缀
只是用了一个泛型类型就可以使用字母T作为泛型类型的名称
//泛型列表
public class List<T>{}
(2).有特殊要求(必须实现一个接口或者派生自基类),或者使用了两个或者多个泛型,就应该给泛型使用描述性名称。
public delegate TOutput Converter<TInput,TOutput>(TIntput from);
public class SortedList<TKey,TValue>{}
5.使用泛型模拟栈(c#)
public class Stack<T>
{
private T[] m_item;
public T Pop(){...}
public void Push(T item){...}
public Stack(int i)
{
this.m_item = new T[i];
}
}
6.泛型类型
泛型类型包括常用的泛型类、接口、方法和委托,可以通过进一步定制泛型类型的default关键字和类型约束使用泛型技术。协变和抗变这两种形式的变体为泛型提供了更大的灵活性。
7.泛型类的实现及使用(c#)
using System;
class Test<T>
{
T obj;
public void F(T t){
obj=t;
Console.WriteLine("泛型类Test的一个参数的方法F():"+t.ToString());
}
public void F(){
Console.WriteLine("泛型类Test的无参数方法F()。");
}
}
Class Program
{
static void Main(string[] args)
{
Test<Program> t1=new Test<Propgram>();
Test<string> t2=new Test<string>();
t1.F();
t2.F("Hellow!");
t3.F(10);
}
}