zoukankan      html  css  js  c++  java
  • 泛型

    泛型(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);
            }
    

      

     

  • 相关阅读:
    vue实战使用ajax请求后台数据(小白)
    jQuery实现tab栏切换效果
    jQuery下的ajax实例
    数据库之视图更新
    SQL Server 全文索引创建
    SQL Server 分区表
    数据快照 (Database Snapshot)
    FileStream
    ODBC,OLEDB,ADO,ADO.net,JDBC 理解
    拖延症?贪玩?来试试"百万金币时间管理法"
  • 原文地址:https://www.cnblogs.com/liujzcom/p/11013320.html
Copyright © 2011-2022 走看看