【问题标题】:Assigning a new value to Hashtable without using the Add method不使用 Add 方法为 Hashtable 分配新值
【发布时间】:2010-10-15 12:04:10
【问题描述】:

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

myHashtable.Add(myNewKey, myNewValue);

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

myHashTable[myNewKey] = myNewValue; 

这两种方法有区别吗?

【问题讨论】:

    标签: c# .net hashtable


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        区别在于处理重复值。

        如果 HashTable 已经包含带有您的键的元素,

        myHashtable.Add() 将引发 ArgumentException。 myHashTable[myNewKey] 用新值替换旧值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-10
          • 1970-01-01
          • 2011-01-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多