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++模板基于“签名”的隐式约束所具有的高灵活性。

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

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

    工欲善其事,必先利其器。
  • 相关阅读:
    bx值
    玲珑杯1147
    Castle
    美团 CodeM 复赛」城市网络
    上海五校赛 密码破解
    上海五校赛 零件组装
    opencv色彩空间
    opencv对图片每个像素操作
    opencv图像的读取和保存以及调用摄像头。
    numpy的logspace产生等比数列
  • 原文地址:https://www.cnblogs.com/zhangzhu/p/2494972.html
Copyright © 2011-2022 走看看