怎么copy Hashtable 的一个副本(非对象引用)就是操作原来的Hashtable 时 不导致副本的对象值跟着变?????CopyTo   和foreach() 都试过了还是不行??

解决方案 »

  1.   

    Hashtable  hash1 = new Hashtable();
    Hashtable hash2 = new Hashtable();
    foreach (System.Collections.DictionaryEntry obj in hash1)
    {
     hash2.Add(obj.Key.ToString(), obj.Value.ToString());
    }
      

  2.   


    Hashtable hash1 = new Hashtable();
    Hashtable hash2 = new Hashtable();
    foreach (System.Collections.DictionaryEntry obj in hash1)
    {
    hash2.Add(obj.Key.ToString(), obj.Value);
    }
      

  3.   

    如果你的Hashtable内部只有结构体而不存在类的对象(string)除外,那么就有用,否则直接复制是不行的,你需要对内部每个对象再次Clone一遍,因为Hashtable内部只记录了那些对象的引用地址。
      

  4.   

    如果Value需要深复制的话再另行处理Hashtable hash1 = new Hashtable();
    Hashtable hash2 = new Hashtable();
    foreach (System.Collections.DictionaryEntry obj in hash1)
    {
    hash2.Add(obj.Key.ToString(), obj.Value.Clone());
    }