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

sto*_*roz 5 .net c# hashtable

要向dotnet Hashtable添加新值,我总是使用:

myHashtable.Add(myNewKey, myNewValue);
Run Code Online (Sandbox Code Playgroud)

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

myHashTable[myNewKey] = myNewValue; 
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 14

为了纠正Sergej的答案......

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