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

    、泛型

    在C#中可以用<>占位符,来进行类型占位。由于泛型占位在编译之后就会被替换成对应的类型,所有可以重用,比object性能要好很多。但有一个不算太大的缺点:泛型占位在编译时必须确定类型(传入或编译器推断)。  

       泛型类  1.1 泛型类中占位符的几种约束

                a.基类约束 pulic class Hourse<T> where T:Pig 只能传入Pig类型             b.接口约束 pulic class Hourse1<T> where T:IPig 只能传入实现了IPig接口的类型             c.引用类型约束 pulic class Hourse2<T> where T:class 只能传入引用类  型             d.值类型约束 pulic class Hourse3<T> where T:struct 只能传入值类型             f.构造器约束 pulic class Hourse4<T> where T:new() 只能传入能被new  ()的类型  pulic class Hourse5<T> where T:class,new()     -class关键字必须在  前面 。这种方式只能传入能被new()的引用类型              多个占位符的约束写法: 每一个约束用一个where 开头。例:          pulic class Hourse6<T,V> where V:struct where T:class           1.2 泛型类的继承        a.非泛型类继承泛型类:              必须指定具体的父类占位符类型 public class Son:Person<string,int>         b.泛型类继承泛型类:             如果子类要将站位符传给父类,则必须与父类的约束保持一致            pulic class Son2<X,Y>:Person<X,Y>占位符类型,此时子类可以不加约束                      如果子类不传递占位符,那么必须为父类指定具体的              pulic calss Son3<X,Y>:Person<string,int>   1.3 封闭类型和开放类型的概念      编码时mylist<T> 是开发类型,运行时产生的具体类是封闭类型  自己实现的泛型类 ---》开放类型 ,可以更改          程序运行时生成的泛型类--》封闭类型,不可改       泛型方法         位置:泛型方法的类型参数,可以在该方法的 形参,方法体,返回值   1、泛型方法的占位符的

       2、泛型方法的重载条件               a.参数个数不一致  b.参数类型不一致(形参非泛型部分)c.方法类型占位符个数不一致   3、泛型方法的重写,注意不需要重写约束条件 ,默认会自己添加

       协变和逆变    只能用于泛型接口和泛型委托

    协变: out  ->代表当前占位符只能当做返回类型,不能当做入参类型 逆变: in   ->代表当前占位符只能当做入参类型,不能当做返回类型

  • 相关阅读:
    博客园 投放 谷歌广告(google adsense) 且不被屏蔽掉
    JAVA与C#程序调用DOS命令
    redhat 5 安装apache 2.2
    解决"Windows 安装程序不允许从远程桌面连接安装"
    测试使用windows live writer的adsense coder发布文章
    解决:apache 整合redmine 启动报错 mod_passenger.so: failed to map segment from shared object: Permission denied
    企业级安全服务权限控制 Acegi安装系统介绍 Spring Framework安全系统
    解决Rails升级问题
    解决MyEclipse 7开发EXTJS 每次保存都要编译js的导致开发效率很低的问题
    解决:redmine 安装 rake db:migrate encoding: utf8
  • 原文地址:https://www.cnblogs.com/wtujvk/p/4082500.html
Copyright © 2011-2022 走看看