5

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

myHashtable.Add(myNewKey, myNewValue);

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

myHashTable[myNewKey] = myNewValue; 

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

4

3 回答 3

14

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

  • Add如果密钥已经存在,确实会抛出异常。
  • 将索引器用作设置器不会引发异常(除非您指定空键)。
  • 如果键不存在并且您使用的是通用的IDictionary<TKey,TValue>. 在非泛型IDictionary实现(例如Hashtable)中,您将获得一个空引用。但是,您不能对任何一个都使用空键-您将得到一个ArgumentNullException.
于 2009-03-25T16:19:40.207 回答
3

如果已经存在具有给定键的项目,则第一个将引发异常,如果没有具有该键的项目,则第二个将引发异常

于 2009-03-25T16:16:32.117 回答
0

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

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

于 2009-03-25T16:21:33.540 回答