摘要:
6. 实现IDictionary接口中的Keys和Values属性 现在我们可以着眼于IDictionary接口的实现。第4节中,专门针对这个接口做了一个最简化的例子,我们来回顾一下,它是怎么实现IDictionary接口中的Keys和Values属性的。 public ICollection Keys { //返回所有键的集合 get { //... 阅读全文
摘要:
5. 实现IEnumerable>接口 我们先来看看ReversibleSortedList类的定义: public class ReversibleSortedList : IDictionary, ICollection>, IEnumerable>, IDictionary, ICollection, IEnumerable 它一共实现了6个接口。... 阅读全文
摘要:
C#对集合类型有统一的规范。它的好处不言而喻,所有集合类都有一些统一的调用方法和属性,这使得学习成本大大降低。统一的规范就是通过接口来实现的(关于接口,如果不熟,请参考 http://www.enet.com.cn/eschool/video/c/30.shtml ),另一方面一些类也会直接调用这些标准接口,使得我们写出来的类有更好的兼容性。最典型的例子莫过于IEnumerable接口,只要实... 阅读全文
摘要:
3. 实现元素添加及自动扩展 您是一单位CEO,单位占地50亩,这几年在你的带领下,公司不断发展壮大,原来50亩地已经不够用。公司急需扩大地盘,这个现实问题摆在你面前,该怎么办?到旁边单位抢地?不行,现在是法制社会。有两个解决方案,第一是买一块50亩的地,这样你的公司就有两个办公地点,缺点是不能统一管理,两个地点的员工交流不顺畅。第二是买一块100亩的地,把原来的地卖掉,公司全部搬到新地点。这... 阅读全文
摘要:
你希望ReversibleSortedList类中的元素是以TKey(键)的顺序进行存储的,并且它即可以从小排到大,也可以从大排到小。当然,最佳方式就是在添加元素时找到合适的位置插入,插入后元素就已经按顺序排好。在一个有序数组中查找合适的插入点这样的算法并不困难, 阅读全文
摘要:
前段时间为了查找泛型资料,我翻译了O'Reilly 出版的《C# Cookbook》这本书的几个关于泛型的章节。其中“4.8 反转Sorted List里的内容”(见
http://cgbluesky.blog.163.com/blog/static/2412355820081211016581/ )这一节中有一个接近1300行代码的例子。
阅读全文
摘要:
9.6.1实现IComparable接口 像所有集合类一样,List实现了Sort()方法,它允许您对所有实现了IComparable接口的对象进行排序。在下一个例子中,您将修改Employee类以实现IComparable: public class Employee : IComparable 实现IComparable接口,Employee对象必须提供CompareTo()方法: pu... 阅读全文
摘要:
数组类型的一个典型问题是固定容量。如果您预先不知道数组将容纳多少对象,就会冒着给数组声明太小(溢出)或太大(浪费空间)的空间的风险。 您的程序可能让用户输入数据或从Web站点收集数据。当它发现对象(字符串,书,值等等),将把它们添加进数组,但您并不知道在这段时间内会收集多少数据。固定尺寸的数组并不是一个很好的选择,因为您并不知道需要多大的数组。 List类是一个根据需要动态增加尺寸的数组。它提... 阅读全文
摘要:
本文翻译自《Programming C#》 阅读全文