在不使用Add方法的情况下为Hashtable分配新值

时间:2009-03-25 16:14:31

标签: c# .net hashtable

要向dotnet Hashtable添加新值,我一直使用:

myHashtable.Add(myNewKey, myNewValue);

但我刚刚遇到一些代码,它们执行以下操作:

myHashTable[myNewKey] = myNewValue; 

这两种方法有什么区别吗?

3 个答案:

答案 0 :(得分:14)

稍微纠正Sergej的回答......

    如果密钥已存在,
  • Add确实会抛出异常。
  • 使用索引器作为setter 不会抛出异常(除非指定null键)。
  • 如果密钥不存在且您使用的是通用IDictionary<TKey,TValue>,则使用索引器作为getter将抛出异常。在非通用IDictionary实现中(例如Hashtable),您将获得空引用。您不能使用任何一个空键 - 您将获得ArgumentNullException

答案 1 :(得分:3)

如果已经存在具有给定键的项目,则第一个将抛出异常,如果没有具有此类键的项目,则第二个将抛出异常

答案 2 :(得分:0)

不同之处在于处理重复值。

myHashtable.Add()如果HashTable已经包含带有您键的元素,则抛出ArgumentException。 myHashTable [myNewKey] 将旧值替换为新值。