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++泛型编程思想方法总结

C++用模板来实现泛型编程,模板分为函数模板和类模板。 基本概念:泛型编程范式GP:模板也叫参数类型多态化。 在编译时期确定,相比面向对象的虚函数多态,能够有更高的效率。 泛型编程是从一个抽象层面描述...
  • Blues1021
  • Blues1021
  • 2015年08月15日 15:39
  • 4438

Java泛型 泛型类型的继承规则

泛型类型的继承规则可能不能凭直觉的来想当然。下面举个例子来看看泛型类型的继承规则。 首先有几个辅助类: package generic; public class Person extends An...
  • l294265421
  • l294265421
  • 2015年06月08日 16:04
  • 2969

Java -- 泛型类型的继承规则(四)

Java -- 泛型类型的继承规则(四) 使用泛型类时,我们有必要连接一些泛型类之间有关继承和子类型的准则。先看要使用的代码示例:class Basic { public void f() {...
  • csdn_of_coder
  • csdn_of_coder
  • 2016年09月17日 17:16
  • 2326

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

重点介绍了C#中泛型方法、泛型类和泛型委托的使用,涉及到了委托的协变和逆变,讲解了最常用的泛型容器的使用方法...
  • jackfrued
  • jackfrued
  • 2014年04月06日 00:31
  • 2168

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

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

12 C# 第十一章 泛型

泛型概述:  目的:  通过泛型可以定义类型安全的数据结构,而无须使用实际的数据类型。使相同算法可以应用于不同的数据类型,而无须复制类型特定的代码。与C++中的模板在语法上比较类似。 语法:...
  • wangzhiyu1980
  • wangzhiyu1980
  • 2013年03月22日 08:17
  • 763

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

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

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

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

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

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

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

  • 2009年09月21日 17:43
  • 9KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#泛型编程指导原则(12--14)
举报原因:
原因补充:

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