• C# 泛型


       泛型是C#2.0推出的新语法,不是语法糖,而是2.0由框架升级提供的功能。 

       所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型。

     示例下载

        //1 引入泛型:延迟声明
        //2 如何声明和使用泛型
        //3 泛型的好处和原理
        //4 泛型类、泛型方法、泛型接口、泛型委托
        //5 泛型约束
        //6 协变 逆变
        //7 泛型缓存

    一 、泛型方法的使用

    二、泛型类,泛型接口,泛型委托(Action,Func)

     

    三、 泛型约束

    T:结构

    类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更多信息,请参见使用可空类型(C# 编程指南)。

    T:类

    类型参数必须是引用类型,包括任何类、接口、委托或数组类型。

    T:new()

    类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new() 约束必须最后指定。

    T:<基类名>

    类型参数必须是指定的基类或派生自指定的基类。

    T:<接口名称>

    类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。

    T:U

    为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。这称为裸类型约束。

    四、泛型继承约束

     

    五、初识泛型缓存

     一般类的静态构造函数,一个  类型   只初始化一次,而且常驻内存。 泛型类的静态构造函数,每个不同的T,都是生成一份不同的副本类,相同的T只会初始化一次。从上图输出结果可以看出,除了第一次循环需要实际计算外,其余的循环都是取得第一次的值,也就是 再次实例化泛型类时 ,相同的T静态构造函数只执行一次。这就是泛型缓存。

  • 相关阅读:
    python 文件 笔记
    python 模块、包 笔记
    类、对象
    python 函数 笔记
    测试价值体现
    断舍离-笔记2
    Happy 2006 POJ
    Triangle War POJ
    Complete the sequence! POJ
    放苹果 POJ
  • 原文地址:https://www.cnblogs.com/ZeedLee/p/10631600.html
Copyright © 2020-2023  润新知