大家好,欢迎来到IT知识分享网。
在介绍泛型之前,我们先抛出这样一个问题:代码实现数值类型相加以及实行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推出的新语法,是由框架升级提供的便捷功能,并不是所谓的语法糖。可以将其看作一切数据类型的集合,使用它可以减少工作量,提高代码的重用率。这里为了讲解泛型,只是简单的介绍了泛型方法,其实泛型不只有泛型方法,还有泛型类,泛型接口,泛型委托等一系列东西。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11633.html