为什么在c#中使用不同的方式将数据添加到哈希表

时间:2014-05-12 06:49:49

标签: c# asp.net hashtable difference

您可以通过两种方式向Hashtable添加数据,如下所示:

第一种方式

Hashtable ohashtable=new Hashtable();
ohashtable[Key1] = Value1;
ohashtable[Key2] =  Value2;
ohashtable[Key3] = Value3;

或者像这样:

第二种方式

Hashtable ohashtable=new Hashtable();
ohashtable.Add(Key1, Value1);
ohashtable.Add(Key2, Value2);
ohashtable.Add(Key3, Value3);

有什么不同?

我认为这段代码解释了这一点。

  

First Way可以为同一个键添加和更新值,因为我们使用了方括号

     

第二种方法是只能将值添加到一个键而不能更新同一个键的值吗?

我的想法是正确的?还是其他任何一点?

3 个答案:

答案 0 :(得分:2)

是的,你的想法是正确的。使用索引器属性(方括号),您可以添加和更新项目。使用Add项目只能添加项目。如果具有给定键的项已经存在于集合中,它将抛出ArgumentException

  

Hashtable.Item财产

     

获取或设置与指定键关联的值。

  

Hashtable.Add方法

     

将具有指定键和值的元素添加到Hashtable中。

对于MSDN上的问题,甚至有一个确切的答案:

  

但是,如果指定的密钥已存在于Hashtable设置中,则Item属性会覆盖旧值。相反, Add方法不会修改现有元素

答案 1 :(得分:0)

使用方括号直接指定值。

   Hashtable ohashtable=new Hashtable();

   ohashtable[Key1] = Value1;

   ohashtable[Key2] =  Value2;

   ohashtable[Key3] = Value3;

使用密钥内容在Hashtable上调用ContainsKey。如果找到密钥,则此方法返回true,无论值是什么。

Hashtable ohashtable=new Hashtable();

ohashtable.Add(Key1, Value1);

ohashtable.Add(Key2, Value2);

ohashtable.Add(Key3, Value3);

答案 2 :(得分:0)

第一种方式和第二种方式不同。

您可以使用Item属性通过设置Hashtable中不存在的键的值来添加新元素。
例如,myCollection["myNonexistentKey"] = myValue

但是,如果指定的键已存在于Hashtable中,则设置Item属性将覆盖旧值。

相反,Add方法不会修改现有元素。