• Visual C#核心编程之泛型


    1、泛型是一种解决方法。泛型是参数化的类型和方法。每个类型形参是一个未指定的类型的占位符。泛型类型或方法的多态性行为是通过类型形参表现出来的,着就是所谓的参数多态化。
    2、泛型取消了不必要的装箱和取消装箱操作,本质上是类型安全的,增强了清晰性
    3、不能是泛型的类型和成员函数如下
      非托管类型
      构造函数
      运算符成员
      属性(Property)
      索引器
      属性(Attribute)
    4、类、结构和接口都可以是泛型。
    5、泛型类型也成为构造类型,有开放式构造类型和封闭式构造类型。开放式构造类型至少有一个类型的形参,该类型形参是一个占位符,不受具体类型的约束。封闭式构造类型,所有的类型形参都是受约束的。受约束的形参称为类型实参,并被赋予一个具体的类型。
      重载方法可以是泛型方法和非泛型方法的混合。如果泛型方法和非泛型方法的组合有歧义,则调用非泛型方法
    6、泛型约束
      class ClassName<T> where T : InterfaceName{}
      派生约束:要求类型实参与指定的类型关联,派生约束是由C#编译器实施的。class ZClass<K, V> where K : XClass where V : YClass {}
        值类型、开放式构造类型、基元类型、System.Array、System.Delegate、System.Enum、System.ValueType不能用作约束
      接口约束:泛型接口
      值类型约束:将一个类型形参限制为值类型,基元和结构都是值类型,值类型约束使用struct关键字;class ZClass<T> where T : struct {} 
      引用类型约束:将一个类型形参限定为引用类型。引用类型一般是用户定义的类型、包含类、接口、委托、字符串和数组类型。引用类型使用class关键字
        class ZClass<T> where T : class {}
      默认的构造函数约束:必须是约束列表中的最后一项,使用new运算符
    7、泛型类型可以有静态成员。静态成员不能绑定到开放式构造类型
    8、泛型类型可以包含运算符成员函数,不同的封闭类型有各自的静态成员集
    9、泛型类型可以包含运算符成员函数,运算符成员函数不能是泛型的
    10、序列化
    11、泛型的本质:

  • 相关阅读:
    [bzoj3999] [TJOI2015]旅游
    [bzoj3143] [HNOI2013]游走
    [bzoj3140] [Hnoi2013]消毒
    [bzoj3142] [HNOI2013]数列
    [bzoj4860] [BeiJing2017]树的难题
    [bzoj2599] [IOI2011]Race
    [bzoj1558] [JSOI2009]等差数列
    [bzoj3626] [LNOI2014]LCA
    [bzoj4011] [HNOI2015]落忆枫音
    JQuery
  • 原文地址:https://www.cnblogs.com/changweihua/p/2203186.html
Copyright © 2020-2023  润新知