【问题标题】:Override value of existing key in hashtable in C#在 C# 中覆盖哈希表中现有键的值
【发布时间】:2016-04-08 05:27:04
【问题描述】:

我有一个接收哈希表的函数,我将它应用到已经存在的哈希表。

我想做的是在传递给函数时替换或更新哈希表中的键值。这是我的意思的一个例子:

void UpdateHashTable(Hashtable ht){      
           userData.Add("myKey",5);
//replace matching keys from old value to the new ht values in argument 
}

void replacement(){
  Hashtable hashTable = new Hashtable;
            hashTable.Add("mykey",15);

  UpdateHashTable(hashTable);
}

是否有内置的替换功能来执行此操作或某种方式来检查匹配的键?

【问题讨论】:

    标签: c# hashtable


    【解决方案1】:

    我发现你的问题有点难以理解,但假设我理解正确:

    没有内置副本可以执行您所说的行为,但它很容易实现。

    步骤:foreach keyvaluepair,检查key是否存在,如果存在则插入。否则,更新现有的。

    void UpdateHashTable(Hashtable ht){
        foreach(var kvp in ht){
            if(userData.ContainsKey(kvp.Key)){
                userData[kvp.Key] = kvp.Value;
            }
            else{
                userData.Add(kvp.Key, kvp.Value);
            }
        }
    }
    

    示例结果:

    ht [ 2 => "A", 3 => "B"]

    userData [ 3 => "C", 4 => "D" ]

    updateHashTable后的userData [ 2=> "A", 3 =>"B", 4=>"D"]

    【讨论】:

    • 谢谢,非常有用 - 很惊讶它没有内置函数。
    • 充其量,您可以将 Linq 函数用于字典,使此过程更加紧凑,但这些函数不适用于 Hashtable。不过,如果您想使用字典,它与 Hashtable 几乎相同。唯一真正的区别是 Dictionary 是一个泛型类型结构,不是基于对象的,也不是线程安全的。
    猜你喜欢
    • 2012-03-31
    • 2013-11-10
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2020-07-25
    • 2016-11-15
    相关资源
    最近更新 更多