泛型
泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。泛型为.NET框架引入了类型参数(type parameters)的概念。类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明、实现。这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyList<string>或 MyList<MyClass>。这避免了运行时类型转换或装箱操作的代价和风险。
为什么要使用泛型?
当我们声明一个 List<object> 集合时,可以随便往这个集合里添加数据,int 类型,double 类型,string 类型,char 类型 等,当我们取数据时··这个时候就需要进行转换,转换时会发生异常,数据精度丢失比如把小数转成了整数 ,(当然还有装箱拆箱 ) 。类型转换和装箱、拆箱的操作都降低了性能
这个时候泛型是不是就可避免上面大部分的问题了
泛型的优点?
1:复用 例如
/// <summary>
/// 打印个int值
/// </summary>
/// <param name="iParameter"></param>
public static void ShowInt(int iParameter)
{
Console.WriteLine("This is {0},parameter={1},type={2}",
typeof(CommonMethod).Name, iParameter.GetType().Name, iParameter);
}
/// <summary>
/// 打印个string值
/// </summary>
/// <param name="sParameter"></param>
public static void ShowString(string sParameter)
{
Console.WriteLine("This is {0},parameter={1},type={2}",
typeof(CommonMethod).Name, sParameter.GetType().Name, sParameter);
//typeof(string)
//typeof(Type)
}
/// <summary>
/// 打印个DateTime值
/// </summary>
/// <param name="oParameter"></param>
public static void ShowDateTime(DateTime dtParameter)
{
Console.WriteLine("This is {0},parameter={1},type={2}",
typeof(CommonMethod).Name, dtParameter.GetType().Name, dtParameter);
}
/// <summary>
/// 打印个object值
/// 1 任何父类出现的地方,都可以用子类来代替
/// 2 object是一切类型的父类
/// 上面的3个方法当使用 object 类型 何为一个时会有
/// 2个问题:
/// 1 装箱拆箱 2数据类型精度
/// </summary>
/// <param name="oParameter"></param>
public static void ShowObject(object oParameter)
{
Console.WriteLine("This is {0},parameter={1},type={2}",
typeof(CommonMethod), oParameter.GetType().Name, oParameter);
}
这个时候 使用泛型的好处就体现出来了
/// <summary>
/// 类型参数实际上就是一个类型T声明,方法就可以用这个类型T了
///
/// 思考下,泛型为什么也可以,支持多种不同类型的参数
/// 泛型声明方法时,并没有写死类型,T是什么,不知道
/// T要等着调用的时候才指定
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="tParameter"></param>
public static void Show<T>(T tParameter)//, T t = default(T
{
Console.WriteLine("This is {0},parameter={1},type={2}",
typeof(CommonMethod), tParameter.GetType().Name, tParameter);
}

浙公网安备 33010602011771号