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