• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
If She Said "Yes".
What'll you do ?
博客园    首页    新随笔    联系   管理    订阅  订阅
C# 泛型介绍

[原]

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

  场景:

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

  方案:

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

  弊端:

    比如现在有一个方法:

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

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

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

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

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

 1.性能(避免了装箱和拆箱操作)

 2.类型安全。

  此外,还有几点好处:

    

1.二进制代码的重用  

2.代码的扩展 

3.命名约定
posted on 2011-08-05 10:55  百花盛开  阅读(132)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3