Bri*_*iec 16 .net c# generics performance
我正在查看一些示例代码,并在其中使用一个ListDictionary对象来存储少量数据(大约5-10个对象,但这个数字可能随时间而变化).我使用这个类的唯一问题是,与我一直在做的其他事情不同,它不是通用的.这意味着,如果我在这里错了,请纠正我,每当我从这里得到一个物体或者列举它时,就会继续施放.在较大的Dictionary<T>对象中是否有足够的开销来证明非泛型的开销ListDictionary?
将在每个页面加载时枚举将使用此对象的代码,我猜这是为什么ListDictionary该类被用于其他替代方案之一的原因.这也是我希望从这个数据列表中获得最佳性能的原因.
Jar*_*Par 10
不幸的是,ListDictionary没有通用的等价物.
然而,实施它并不是非常困难.ListDictionary本质上是通过保持键/值对的链接列表并迭代它们以进行查找操作来工作的.你可以建立一个ListDictionary<TKey,TValue>通过包装一个LinkedList<T>有一些很干脆LINQ表达式.
例如
public class LinkedDictionary<TKey,TValue> {
private LinkedList<KeyValuePair<TKey,TValue>> _list = new LinkedList<KeyValuePair<TKey,TValue>>();
private IEqualityComparer<TKey> _comp = EqualityComparer<TKey>.Default;
public void Add(TKey key, TValue value) {
_list.Add(new KeyValuePair<TKey,TValue>(key,value));
}
public TValue Get(TKey key) {
return _list.Where(x => _comp.Equals(x.Key,key)).First().Value;
}
...
}
Run Code Online (Sandbox Code Playgroud)
没有通用的等价物ListDictionary。
如果您对这本小字典的使用不以Add和为主Remove,您可能会考虑SortedList<TKey, TValue>尽管它的名称是 ,但它实现了IDictionary<TKey, TValue>。ListDictionary与单链表支持的不同,SortedList它由排序键和数组值的数组支持。
| 归档时间: |
|
| 查看次数: |
6220 次 |
| 最近记录: |