C# 泛型介绍

本文介绍了CLR2.0中新引入的泛型特性,解释了它如何解决了早期版本中类型不确定的问题,并探讨了使用泛型所带来的性能提升和类型安全性增强等优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[原]

  泛型是CLR2.0中的新特性。

  场景:

    在CLR1.0中,如果要创建一个灵活的类或方法,但是该类或方法在编译期间并不能确定所使用的是什么类。

  方案:

    要解决这种问题,我们必须以Object类为基础。

  弊端:

    比如现在有一个方法:

public string doSomething(Object item)
{
....
}

    这个方法既可以传进引用类型,也可以传入值类型。(在设计这个方法时,我们不能确定参数到底是引用类型,还是值类型。即使知道是引用类型,那么使用的是什么类,我们也不能     知道。所以我们把这个参数定义为Object)

    从表面上来看,这种解决方案很美好,至少我实现了需求(编译期间无法确定所适用的类型)。

    如果我们仔细观察,会发现这种解决方案存在两种问题:1.传递的是引用类型:没有了类型安全性,所以需要强制类型转换。 2.传递的是值类型:需要装箱(eg.  Int ---> Object),这样会有损性能,特别是多次装箱的场景下,对性能的影响尤为突出。

  由此,我们至少看出CLR2.0中的泛型带来的两点好处:

  此外,还有几点好处:

    

1.二进制代码的重用  

2.代码的扩展 

3.命名约定

转载于:https://www.cnblogs.com/ifshe/archive/2011/08/05/2128346.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值