学习泛型

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

泛型实现了类型参数化!

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

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

原文地址:https://www.cnblogs.com/crazycxy/p/2598509.html