zoukankan      html  css  js  c++  java
  • 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、泛型的本质:

  • 相关阅读:
    Android UI法宝的设计资源的开发
    Ural 1309 Dispute (递归)
    ZOJ3827 ACM-ICPC 2014 亚洲区域赛的比赛现场牡丹江I称号 Information Entropy 水的问题
    myeclipse如何恢复已删除的文件和代码
    在C#主线程和子线程将数据传递给对方如何实现
    SSh框架结构(Struts2.1+Hibernate4.0+Spring3.1)
    基于大数据分析的安全管理平台技术研究及应用【摘录】
    ulimit -t 引起的kill血案
    Oracle RAC 环境下的连接管理
    SMTP协议--在cmd下利用命令行发送邮件
  • 原文地址:https://www.cnblogs.com/changweihua/p/2203186.html
Copyright © 2011-2022 走看看