zoukankan      html  css  js  c++  java
  • C#的泛型编程

    泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活复用。

    例子代码:
    class Program
    {
         static void Main(string[] args)
         {
               int obj = 2;
               Test<int> test = new Test<int>(obj);
               Console.Write("int:"+test.obj);

               string str = "hello world";
               Test<string> test = new Test<string>(str);
               Console.Write("string:"+test.obj);

               Conslole.ReadKey();
         }
    }

    class Test<T>
    {
        public T obj;
        public Test(T obj)
        {
            this.obj = obj;
        }
    }


        输出结果是:
        int: 2
        String: hello world

    程序分析:

    1、 Test是一个泛型类。T是要实例化的范型类型。如果T被实例化为int型,那么成员变量obj就是int型的,如果T被实例化为string型,那么obj就是string类型的。

    2、 根据不同的类型,上面的程序显示出不同的值。

    C#泛型特点:1、如果实例化泛型类型的参数相 同,那么JIT编辑器会重复使用该类型,因此C#的动态泛型能力避免了C++静态模板可能导致的代码膨胀的问题。2、C#泛型类型携带有丰富的元数据,因 此C#的泛型类型可以应用于强大的反射技术。3、C#的泛型采用“基类、接口、构造器,值类型/引用类型”的约束方式来实现对类型参数的“显示约束”,提 高了类型安全的同时,也丧失了C++模板基于“签名”的隐式约束所具有的高灵活性。

    以上内容转自他处,旨在交流学习。

    关于泛型平时用得较少,个人的理解也很有限,更多高级的用法有待深入探究。

    工欲善其事,必先利其器。
  • 相关阅读:
    WGS84经纬度坐标与web墨卡托之间的转换【转】
    ArcGIS API for Javascript配置
    百度地图BMap API实例
    VS2010 Web项目需要缺少的Web组件才能加载
    单态模式
    对服务的操作
    根据子级ID获取其所有父级
    在DropDownList里显示多级分类
    jQuery给CheckBox添加事件
    FolderBrowserDialog使用
  • 原文地址:https://www.cnblogs.com/zhangzhu/p/2494972.html
Copyright © 2011-2022 走看看