【问题标题】:Check duplicate key in Hashtable before adding a key在添加键之前检查 Hashtable 中的重复键
【发布时间】:2015-09-30 13:48:02
【问题描述】:

我有一个 Hashtable,我想在 Hashtable 中添加键之前检查 Hashtable 是否有键。在 Hashtable 中添加重复键会引发异常。 基本上我想覆盖 Hashtable 的虚拟“添加”方法并检查它。我不知道如何覆盖 Add 方法。

请帮我写重写方法。

【问题讨论】:

  • 你为什么还要使用HashTable?使用Dictionary<Tkey, Tval>。但是,请使用ContainsKey
  • 实际上是旧代码,暂时无法替换。更换需要付出很多努力。
  • 在数百个地方的项目中,我们在 Hashtable 中添加键。但是现在在很多地方它可能会添加重复键。那时它会抛出异常。我想避免这种异常,并且只想进行一项常见检查以减少工作量。

标签: c#-4.0 overriding hashtable


【解决方案1】:

您可以使用ContainsKey

另一种方法是使用Item indexer-property,它会添加新密钥并更新现有密钥。

var ht = new System.Collections.Hashtable();
ht["test"] = "foo"; // added
ht["test"] = "bah"; // updated

但是,您应该考虑将旧的和多余的Hashtable 替换为通用的Dictionary<Tkey, Tval>Why?

【讨论】:

    【解决方案2】:

    Hashtable 类的 Add 方法是可重写的。所以试试这个:

    class MyHashTable : Hashtable
    {
        public override void Add(object key, object value)
        {
            try
            {
                base.Add(key, value);
            }
            catch
            {
                // whatever
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2018-03-31
      • 2015-10-30
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      相关资源
      最近更新 更多