ImageList.ImageCollection如何处理重复?

时间:2014-01-06 19:11:06

标签: c# .net

在C#.NET中,ImageList.ImageCollection.Add(String,Image)如何处理重复键?它会用相同的密钥覆盖条目,还是抛出/不运行?关于这个函数的MSDN文档是裸的,没有提到这方面的行为。

2 个答案:

答案 0 :(得分:1)

查看Reflector中的代码,它在内部使用ArrayList存储密钥,因此当您按键访问图像时,它将返回使用该密钥添加的第一个项目。

答案 1 :(得分:1)

我查看了ImageList.ImageCollection的来源,但看不到任何重复密钥检查代码。

在内部,ImageCollection使用ArrayListImageInfo类来存储密钥(ImageInfo包含字符串Key字段)。它的操作实际上是低效的,因为它不是哈希表,而是通过迭代ArrayList中的每个存储的ImageInfo并返回第一个匹配的索引(即O(n)搜索),se {来执行字符串查找。 {1}}。因此,添加具有相同密钥的第二个图像将导致该图像无法通过密钥访问,但仍可通过索引访问。