要向我一直使用的 dotnet Hashtable 添加新值:
myHashtable.Add(myNewKey, myNewValue);
但我刚刚遇到了一些代码,它执行以下操作:
myHashTable[myNewKey] = myNewValue;
这两种方法有什么区别吗?
为了稍微纠正 Sergej 的回答......
Add
如果密钥已经存在,确实会抛出异常。IDictionary<TKey,TValue>
. 在非泛型IDictionary
实现(例如Hashtable
)中,您将获得一个空引用。但是,您不能对任何一个都使用空键-您将得到一个ArgumentNullException
.如果已经存在具有给定键的项目,则第一个将引发异常,如果没有具有该键的项目,则第二个将引发异常
不同之处在于处理重复值。
如果 HashTable 已包含带有您的键的元素,则 myHashtable.Add()将引发 ArgumentException。myHashTable[myNewKey]用新值替换旧值。