![](/img/trans.png)
[英]Design Decision — How to handle ImageList in a Game for good memory management
[英]How does ImageList.ImageCollection handle duplicates?
在C#.NET中, ImageList.ImageCollection.Add(String,Image)
处理重复键? 它会覆盖具有相同键的条目还是引发/不操作? 关于此功能的MSDN文档是裸露的,并且没有提及这方面的行为。
查看Reflector中的代码,它在内部使用ArrayList来存储键,因此,当您按键访问图像时,它将返回添加有该键的第一项。
我查看了ImageList.ImageCollection
的源代码,但看不到任何重复键检查代码。
在内部, ImageCollection
使用一个ArrayList
的ImageInfo
类存储密钥( ImageInfo
包含字符串Key
字段)。 由于它不是哈希表,因此其操作实际上效率很低,而是通过遍历ArrayList中每个存储的ImageInfo
并返回第一个匹配项的索引(即O(n)搜索)(例如ImageList.ImageCollection.IndexOfKey
)来执行字符串查找。 。 因此,使用相同的密钥添加第二个图像将导致该图像无法通过密钥访问,但是仍然可以通过索引对其进行访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.