.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 中的值发生变化时自动重建索引?不得知,先用着。