欢迎光临散文网 会员登陆 & 注册

C#_协变与逆变

2022-02-10 10:52 作者:Pan_ana  | 我要投稿
  • What(1.出现主要是用来修饰泛型的、只有泛型接口泛型委托可以使用、遵循里氏替换原则

  1. out【修饰委托只能作为返回值

  2. 和谐或自然的变化(里氏替换-父类装载子类)

  3. 其变化给我们的感受是合理的

  1. in【修饰委托只能作为参数

  2. 逆常规、不正常的变化(里氏替换-子类变成父类)

  3. 其变化给我们的感受是不合理的

  • Why

  1. 为开发者提供便利

  2. 提供设计思路


  • How

在使用相同类型签名的泛型委托时,泛型委托实例化的对象可以赋值的前提

  1. 泛型有着继承关系,不同的泛型委托对象存储的方法处理的返回值类型不一致时,如果加了out修饰,就可以让类型委托存储类型委托(有了out就会自动去判断泛型类型是否有继承关系)【对返回类型进行了限制】

  2. 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。,如果加了in修饰,就可以让类型的委托存储类型委托(有了in就会自动去判断泛型类型是否有继承关系)【对参数类型进行了限制】

  3. 最终存储的泛型委托类型取决于修饰泛型的修饰符类型,两个对象自己可以赋值

  4. 最终存储的泛型接口类型取决于修饰泛型的修饰符类型,两个对象自己可以赋值


C#_协变与逆变的评论 (共 条)

分享到微博请遵守国家法律