关闭

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

663人阅读 评论(0) 收藏 举报

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的支持。

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:311078次
    • 积分:4308
    • 等级:
    • 排名:第7277名
    • 原创:79篇
    • 转载:33篇
    • 译文:55篇
    • 评论:103条
    文章分类
    最新评论