为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

构建可反转排序的泛型字典类(6)--实现IDictionary接口中的Keys和Values属性

2017-12-19 3页 doc 34KB 9阅读

用户头像

is_435706

暂无简介

举报
构建可反转排序的泛型字典类(6)--实现IDictionary接口中的Keys和Values属性构建可反转排序的泛型字典类(6)--实现IDictionary接口中的Keys和Values属性 构建可反转排序的泛型字典类(6)--实现IDictionary接口中的Keys和Values属性 6. 实现IDictionary接口中的Keys和Values属性 现在我们可以着眼于IDictionary接口的实现。第4节中,专门针对这个接口做了一 个最简化的例子,我们来回顾一下,它是怎么实现IDictionary接口中的Keys和Values属性的。 public ICollection Keys { //返回所有键...
构建可反转排序的泛型字典类(6)--实现IDictionary接口中的Keys和Values属性
构建可反转排序的泛型字典类(6)--实现IDictionary接口中的Keys和Values属性 构建可反转排序的泛型字典类(6)--实现IDictionary接口中的Keys和Values属性 6. 实现IDictionary接口中的Keys和Values属性 现在我们可以着眼于IDictionary接口的实现。第4节中,专门针对这个接口做了一 个最简化的例子,我们来回顾一下,它是怎么实现IDictionary接口中的Keys和Values属性的。 public ICollection Keys { //返回所有键的集合 get { //把所有键的集合拷贝到新数组中并返回 Object[] keys = new Object[ItemsInUse]; for (Int32 n = 0; n < ItemsInUse; n++) keys[n] = items[n].Key; return keys; } } public ICollection Values { //返回 所有值的集合 get //把所有值的集合拷贝到新数组中并返回 { Object[] values = new Object[ItemsInUse]; for (Int32 n = 0; n < ItemsInUse; n++) values[n] = items [n].Value; return values; } } 可以很清楚地看到,它把数组里的所有元素拷贝 到另一块内存空间中并返回,这再一次带来了性能问,如果频繁地访问Keys和Values属性还会给垃圾回收带来压力。最好的解决办法当然是 直接引用而不是拷贝数组里的元素,你还希望增加一些功能,可以使用索引访问Keys属性或Values属性所返回的ICollection。但从第5节中的 图2(最好直接下载下来以方便观看)中可以看到ICollection接口只有寥寥几个成员,并没有Item属性,怎么办呢,当然是从ICollection的子 接口中寻找合适的接口了。我们知道,ICollection接口是集合接口的基接口,而它的子接口则是更专用的集合接口,如IDictionary表示带有键\值对的集合,IList表示值的集合,它们都可以按索引访问。 所以这一次你决定另外实现公有的Keys和Values属性,并返回一个 ILst接口,并手动实现它,一方面满足所有的功能,另一方面也可以实现IDictionary和IDictionary接口的 Keys和Values属性。好,先来看看ILst接口的关系图: 图4 IList接口关系图
/
本文档为【构建可反转排序的泛型字典类&#40;6&#41;--实现IDictionary接口中的Keys和Values属性】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索