泛型

1.编程思想

   延迟声明:把参数类型的声明推迟到调用。这不是语法糖,而是由框架升级提供的功能。

   由此延伸出来的一个架构设计的思想:推迟一切可以推迟的东西。

2.语言转换

    高级语言=》中间语言(IL)=>运行时,即时编译器(GIT)将中间语言转为二进制机器码。

3.泛型的性能问题

   泛型不会影响性能。因为1.泛型不会产生装箱拆箱的问题。2.泛型是在二进制机器码执行器在git里面进行类型解析替换的,将泛型方法转为普通方法了。所以泛型方法性能=普通方法》object类型参数的方法。

4.泛型方法使用时可以不传入类型,编译器可以自动推断。

5.应用场景:为了代码的复用。不用每个类型都写一遍。通用方法一般都用泛型。泛型既可以做参数也可以做返回值。泛型一切目标都是为了解决相同逻辑不同类型的问题。提高代码复用、提高效率。

6.泛型类、泛型方法、泛型接口、泛型委托。

7.拓展:子类构造方法默认调用父类的构造无参构造方法。除非制定以下:base("")。

8.泛型约束:

  可以是多重的(并的关系)、复合的。父类约束只能一个,接口约束可以多个。因为c#中只能单继承但是可以多实现。

   8.1加了基类泛型约束,其实也是相当于给T指定了类型,在泛型方法内可以直接使用积累的属性和方法。比如 where T:People 表示T一定是People的子类,比如People有 Name Age的属性,就可以通过T的实例直接进行调用了。

   8.2接口泛型约束:泛型类型必须实现该接口

   8.3无参构造约束: Where t:new() 泛型必须具有一个无参构造函数

   8.4引用类型约束:Where T:class

   8.5值类型约束:Where T:struct

9.拓展关键字  default(T)  返回一个类型对应的默认值。如果是int 则返回0 如果是bool 则返回false。

 

转载于:https://www.cnblogs.com/chenxizhaolu/p/6896398.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值