泛型基础1

  • 泛型

  • 泛型基础

泛型概念: 泛型(generic)是C# 2.0推出的新语法,它是专门为处理多段代码在不同的数据类型上执行相同的指令的情况而设计的。 即泛型让不同的数据类型支持相同的业务逻辑。

泛型语法: <T>:T未知类型 多个未知类型:<T,K,M,N....>

为什么C#要引入泛型?1. 支持多种数据类型 2. 性能高(和object比,object会使用到拆箱 装箱操作)3.语法优美。

优点:代码复用 缺点:具体类型在转换成object类型时,使用了C#装箱,装箱会带性能损失。

  • 代码举列
 // <T>定义一个未知类型,泛型语法
  // 泛型在定义时,并没有指定具体的类型,即指定具体类型延迟到方法调用时。
  public static void Show2<T>(T a)
  {
      Console.WriteLine($"参数类型:{a.GetType().FullName},参数值:{a}");
  }

调用Show 2 中的T可以是各种类型

  • 泛型约束

常用的约束

   where T1 : struct  //解释:T1必须是值类型
   where T2 : class   //解释:T2必须是引用类型
   where T3 : new()  //解释:T3这个类型中,必须有一个无参数的构造方法,这个约束必须放到最后
泛型的逆变与协变

逆变和协变只能放在泛型接口和泛型委托参数前面,只发生在泛型中 out 协变(covariant ),用来修饰返回值 :小类型转大类型,隐式转换 in 逆变(contravariant),用来修饰传入参数: 大类型转小类型,强制转换 斜边判断 1.变量名称前必须是接口或委托 2.接口和委托必须是泛型的,且T前有关键字out 逆变判断 1.变量名称前必须是接口或委托 2.接口和委托必须是泛型的,且T前有关键字in

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值