【发布时间】:2011-02-22 18:34:19
【问题描述】:
我需要一个 Dictionary 或 SortedList 之类的东西,但是当它收到两个相同的东西时,我不断抛出异常......还有其他方法吗?
谢谢
【问题讨论】:
-
您可以下载 PRISM 并使用 ListDictionay 类。
标签: c# .net winforms list dictionary
我需要一个 Dictionary 或 SortedList 之类的东西,但是当它收到两个相同的东西时,我不断抛出异常......还有其他方法吗?
谢谢
【问题讨论】:
标签: c# .net winforms list dictionary
我猜你正在使用
dictionary.Add(key, value);
如果您对替换现有的键/值对感到满意,那么只需使用索引器:
dictionary[key] = value;
如果您想为同一个键设置多个值,请参阅其他答案 :)
【讨论】:
您可能想要multimap。您可以使用Dictionary<Key, List<Value>> 模拟一个。另见this question,它有一些多地图实现。
【讨论】:
字典或排序列表中的键应该是唯一的:这就是哈希表的目的。您可以使用 List<KeyValuePair<TKey, TValue>> 或 KeyValuePair<TKey, TValue>[] 代替,但您当然无法通过键定位值,因为您可能有重复项。
【讨论】:
字典和排序列表都是键控的,这意味着键必须是唯一的。
您可以在添加项目之前进行检查,例如dic.ContainsKey(key) 或 list.Contains(item) 在添加之前。
如果您希望能够为单个键添加多个值,可以使用NameValueCollection。
【讨论】:
如果您要的是一个值与键相同的字典,那么在 System.Collections.Generic 命名空间中有一个名为“HashSet”的通用集合类型,看起来它可以用于此目的。
如果您只是询问添加到字典时产生的异常,我认为 Jon Skeet 可能是正确的,可能是您的问题。
哈希集:
【讨论】: