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(){...}

  • 相关阅读:
    restframwork框架
    restful规范
    python_微信 跳一跳
    项目经历1
    python3.6+GDAL-2.1.3环境配置
    OpenCV&&python_图像平滑(Smoothing Images)
    opencv python3.6安装和测试
    python_机器学习—sklearn_win_64-3.6安装&&测试
    python安装 numpy&安装matplotlib& scipy
    自动出题判分——c#学习实践
  • 原文地址:https://www.cnblogs.com/crazycxy/p/2598509.html
Copyright © 2011-2022 走看看