在C#.NET中,ImageList.ImageCollection.Add(String,Image)
如何处理重复键?它会用相同的密钥覆盖条目,还是抛出/不运行?关于这个函数的MSDN文档是裸的,没有提到这方面的行为。
答案 0 :(得分:1)
查看Reflector中的代码,它在内部使用ArrayList存储密钥,因此当您按键访问图像时,它将返回使用该密钥添加的第一个项目。
答案 1 :(得分:1)
我查看了ImageList.ImageCollection
的来源,但看不到任何重复密钥检查代码。
在内部,ImageCollection
使用ArrayList
个ImageInfo
类来存储密钥(ImageInfo
包含字符串Key
字段)。它的操作实际上是低效的,因为它不是哈希表,而是通过迭代ArrayList中的每个存储的ImageInfo
并返回第一个匹配的索引(即O(n)搜索),se {来执行字符串查找。 {1}}。因此,添加具有相同密钥的第二个图像将导致该图像无法通过密钥访问,但仍可通过索引访问。