我有一个Dictionary<int, object>
哪里的int
是一个属性obj
。有没有更好的数据结构呢?我觉得使用属性作为钥匙是多余的。
This Dictionary<int, obj>
是容器类中的一个字段,允许随机索引到obj
值基于int
身份证号。容器类中的简化(无异常处理)索引器如下所示:
obj this[int id]
{
get{ return this.myDictionary[id];}
}
where myDictionary
就是前面提到的Dictionary<int, obj>
拿着物体。
这可能是快速随机访问的典型方式,但我想获得第二意见。
框架中没有具体的类可以执行此操作。不过有一个抽象的,KeyedCollection。您必须从该类派生您自己的类并实现 GetKeyForItem() 方法。这非常简单,只需返回您想要索引的属性的值即可。
这就是您需要做的全部,但请密切关注 ChangeItemKey()。当用作键的属性更改值时,您必须执行一些有意义的操作。如果您确保该属性是不可变的(只有一个 getter),那么就很容易了。但如果你不这样做,那就很尴尬了,对象本身现在需要知道它存储在你的集合中。如果您不采取任何措施(调用 ChangeItemKey),该对象就会在集合中丢失,您将无法找回它。非常接近泄漏。
请注意 Dictionary 如何通过分别指定键值和对象来回避此问题。您可能仍然无法找回该对象,但至少它不会因设计而丢失。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)