zoukankan      html  css  js  c++  java
  • 学习泛型

    一直没有好好学习泛型,今晚特意好好的学习

    泛型实现了类型参数化!

    通过参数化类型来实现在同一份代码上操作多种数据类型的目的

    struct C<V,U>{}//泛型结构,具有两个泛型参数的V,U,<里面可以包含若干个类型参数>,参数在类中所处的位置,一般都是作为方法的参数类型,返回类型,字段,属性...

    使用泛型是将类的共同行为提取出来,而将变化的部分抽象为类型参数,特别适合于使用同一段代码处理不同的数据类型的场景

    C#中除了泛型类,泛型接口,泛型结构,泛型方法,泛型事件,泛型委托

    在为类型参数添加约束约束之前,类型参数添加约束之前,类型参数将只能访问System.Object类型中的公有方法,如Equals(),GetHashCode()...

    泛型约束写法

    class Luck<T> where T:Suck{....}

    约束类型共有六种

    where T:Class 类型实参必须是引用类型(次序第一)

    where T:struct 类型实参必须是值类型(同上)

    where T:<base class name> 类型实参必须是指定的类或者他的派生类(同上)

    where T:<interface name> 类型实参必须是指定的接口或者实现了该接口的类型,(不限个)

    where T:new() 类型必须有一个无参的构造函数(次序放在最后)

    where T:U 裸类型约束,我觉得这种是冗余的,如果只有一种类型,那么干嘛还用泛型,你说是吧

    where 子句之间没有顺序,where 字句内部有次序要求

    Class One<T>:Base{}    泛型类One<t>继承自非泛型基类Base

    class Two<T>:Base<int>  封闭式构造类型示例

    class Three<T>:Base<T>  开放式构造类型示例

    泛型方法是使用类型参数声明的方法,看来有点想泛型委托,也可以对类型参数应用约束,如下

    publicstaticTResultPring<T,TResult>(T msg)where TResult:new(){...}

  • 相关阅读:
    [转载]OpenGL函数参考(中文版)
    [转载]OpenGL 中常用的 GLUT 函数库
    VC6.0 VS2008 openGL环境配置 [和glut库的加入]
    java测试一个类的方法,用junit
    openal配置(更新)
    jsp URL 传参数 服务端接收后乱码的问题
    NeHe OpenGL 第二课 学习总结
    vs2008 添加头文件路径
    困惑之一:c++初始化成员列表
    C++中一些对原理描述相当好得语句
  • 原文地址:https://www.cnblogs.com/crazycxy/p/2598509.html
Copyright © 2011-2022 走看看