C#泛型编程指导原则(12--14)

原创 2007年09月14日 19:11:00

Item 12: Custom Collections Should Extend Collection<T>自定义集合应当扩展自Collection<T>

在一些时候,你很希望引入自己定义的泛型集合。典型来讲,自定义的泛型集合都应该由现有的来Collection<T>扩展。这样就可以继承它的行为,并且可以根据自己特定的需要来补充或者修改其功能。

在这些情况下,你可能尝试使自定义泛型集合扩展自List<T>List<T>毫无争议的是System.Collections.Generic 命名空间中最强大最有活力的容器。然而,为了使其最优,该类阻止客户重写(Overrid)或者改变它的行为。假设,你可以修改List类,使其可以在一个Item被添加或者被移除的时候记录一些额外的数据。但是List<T>不允许客户重写它的添加和移除Item的方法。因此,虽然List<T>可能是你最喜欢的类之一,但是它不能被作为自定义类的基类。相反,Collection<T>可以充当这一角色。虽然他并没有List<T>的所有能力,但是它公开了一系列关键的保护成员,你可以自由的重写。

Item 13: Use the Least Specialized Interface in Your APIs在自己的API中使用最小的限定接口

System.Collections.Generic命名空间中所包含的集合,实现了一系列不同的接口,这些接口为管理集合、与集合交互提供了不同层次的支持。在自己的API中,应该根据需要选择最合适的接口。一条从经验中得来的规则就是,在自己的API中使用最小的限定接口。如,如果希望在集合中依次迭代集合中的Item,仅仅需要实现IEnumerable<T>接口。

Item 14: Enable “for each” Iteration with IEnumerable<T>通过IEnumerable<T>来支持foreach迭代

System.Collections.Generic命名空间包含了 IEnumerable<T> 接口。该接口为迭代集合中的元素提供了一个标准的机制。在框架中,它的角色比其他基于集合的接口更显著。foreach提供了一个简洁的、可读性强的途径来访问集合中的所有元素(Item)。因此,在自己的泛型中最好实现对foreach的支持。

 

相关文章推荐

[连载]C#程序设计(14)--- 泛型和容器

重点介绍了C#中泛型方法、泛型类和泛型委托的使用,涉及到了委托的协变和逆变,讲解了最常用的泛型容器的使用方法...

14) 常用的遍历/(条件)查找/收集数据/(拷贝2比较优先)排序算法algorithm [原创,泛型编程,自由下载转载,需注明出处]

下面的一套算法,配合前面提供的泛型库的支持部件,能够提供下列基于概念的功能: 1.遍历处理 2.统计计数 3.查找 4.最大/最小值 5.收集 : 收集的结果可以是任何形式的:数组/容器,T/T*,并...

C#入门经典学习12-泛型2

定义泛型 class MyClass { } 可以把它们用作字段的类型,属性的类型,方法的返回值以及参数类型。 不能假定他是什么类型而使用他,通常只能把他看作System.Object的类型...

12) 类型安全的任意类CAnyObject [原创,泛型编程,自由下载转载,需注明出处]

anyObject.h , 这是泛型库中13个源文件中的一个,不知道csdn有没有自动上传源代码的功能,有知道怎么用的朋友请告诉我一声。 这个源文件可以封装任意类到一个共同的类中,不需要封装的类之间有...

C# 2.0中泛型编程思想分析

  • 2009年11月23日 20:23
  • 20KB
  • 下载

C#类库处理异常指导原则

作为一个类库开发的新手,在面对Exception时,一直不知道所措。阅读了的异常处理部分,记录下一些基本的原则,供日后查询并与大家分享。欢迎高手指点一二。 一、善用finally块  ...
  • kmguo
  • kmguo
  • 2013年11月28日 23:54
  • 2437

XML 泛型 控件 的C#编程示例

  • 2007年12月29日 15:33
  • 273KB
  • 下载

C# 2.0中泛型编程初级入门教程

  • 2009年09月21日 17:43
  • 9KB
  • 下载

C#数据结构和算法学习系列二----泛型编程

面向对象编程的问题之一就是所谓“代码膨胀”的特征。为了说明方法参数所有可能的数据类型而需要重载某种方法或重载一套方法集合的时候,就会发生某种类型的代码膨胀。代码膨胀的解决方案之一就是使某个值呈现多种数...
  • nlx0201
  • nlx0201
  • 2011年09月11日 20:03
  • 901
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#泛型编程指导原则(12--14)
举报原因:
原因补充:

(最多只允许输入30个字)