.NET 2.0,新发现的泛型 KeyedCollection

翟二喜

.NET 2.0 的泛型支持让我感到很多程序逻辑实现的便利。


using System.Collections.Generic;


最常用的泛型就是 Collection<T> 了,用到字典查找时就用 Dictionary<K,T>,但是在用到字典查找时还是不方便,但 Dictionary<K,T> mydict 在 mydict.Add 时,除了自己用的 T 之外还需要另外填写一个 K。


一般情况下,这个 K 就是 T 中的一个字符串或数字的一个成员。添加时加这么一次到是没什么,关键是万一 T 中这个成员值变了的化,相应的 K 不会跟着改变,产生程序内部的歧义。


今天发现了 KeyedCollection<K,T>使用它要 override string GetKeyForItem( Payvia item ); 实现他的抽象函数。一看就明白了,它的 K 是从 T 中取得的,那么 T 中的值发生变化时,其 K 肯定就会通过上面这个函数的映射跟着变化了。


KeyedCollection<K,T>、在进行 Key 查找时的效率如何没有测试。主观觉得 Dictionary 要做索引查找比较方便,.NET内部应该是已经实现了;KeyedCollection 是否会实现索引查找呢?当 T 中的值发生变化时自动重建索引?不得知,先用着。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: