C#编程之泛型方法

  在介绍泛型之前,我们先抛出这样一个问题:代码实现数值类型相加以及实行string类型字符拼接

  稍微有点基础的同学就会觉得这很easy,代码提笔就来(如下)

public int AddInt(int a,int b)
{
    int IntResult=a+b
    return IntResult;
}

public string AddString(string a,string b)
{
    string StrResult=a+b
    return IntResult;
}

但是,仔细一分析,哈。。。这两个方法除了数据类型不一样之外,其余的都一样。有些同学小脑筋一转,请出了他们两者的“爸爸”object。(PS:这也是其他一切数据类型的爸爸)请看代码

public object Add(dynamic a, dynamic b)
{           
     object oResult = a + b;
     return oResult;
}

至于为什么可以这样写,分为两点:①任何父类在的地方都可以用子类来代替;②Object是一切类型的父类

好了,大家来找找茬。对于这个方法与前两者有何不一样的,对喽,有眼尖的同学一眼就看出来了

                                      

这里补充点小知识,dynamic经过再编译之后也是个object,但这个老哥可以避开编译器的检查。但是,object存在装箱拆箱的问题(想了解的,这个网址:https://www.cnblogs.com/schangxiang/p/11229469.html),拖慢了程序运行的速度。

那么有没有一种方法,可以既不影响性能,也能实现功能。这时咱们的主角:泛型。缓缓走来 ,放着我来,且看代码:

public T AddIntOrString<T>(T a,T b)
{
      dynamic first = a;
      dynamic second = b;
      var tResult = first + second;
      return result;
}

       这里的T可以用任意的东西替代,随你,它只是一个占位置的东西而已,真正的人没有来,你不知是男是女,是高是低。最后来小结下            

       泛型,是C#2.0推出的新语法,是由框架升级提供的便捷功能,并不是所谓的语法糖。可以将其看作一切数据类型的集合,使用它可以减少工作量,提高代码的重用率。这里为了讲解泛型,只是简单的介绍了泛型方法,其实泛型不只有泛型方法,还有泛型类,泛型接口,泛型委托等一系列东西。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值