本帖最后由 yuanzhouting 于 2013-03-22 12:13:32 编辑

解决方案 »

  1.   

      string addtemp = hashTable[hashItem].ToString();
                    string[] addList = 
    循环内,不要定义变量定义在循环外,内部只操作变量 .
      

  2.   

       foreach(object hashItem in new ArrayList(hashTable.Keys))
            {
                if(hashItem.Equals(partreference))
                {
                   string addtemp = hashTable[hashItem].ToString();这个循环可以去掉,直接判断hash表是否有这个键就行了,hash表的键不可能有重复的吧if(hashTable.Contains(hashItem))
    {
      string addtemp = hashTable[hashItem].ToString();
    }
    还有很多地方可优化,等下贴一份改过代码给你
      

  3.   

    写错个变量名,应该是:
    if(hashTable.Contains(partreference))
    {
      string addtemp = hashTable[partreference].ToString();
    }
      

  4.   

    Hashtable resultHashTable = (Hashtable)hashTable.Clone();//拷贝一个副本,避免直接修改传入的哈希表核心循环中更改这个副本哈希表:    resultHashTable[partrefence] = "";  //I do
        foreach (string colTemp in alist)
        {
           resultHashTable[partrefence] += colTemp + "\r\n"; //I do 
        } 
     
    最后直接返回这个副本哈希表
    return resultHashTable;
      

  5.   

    哈希找Key是O(1)的,List 查找是O(N)的,多利用这个特性。
    不知道大欧记法吗?书读的少了吧。      foreach(object hashItem in new ArrayList(hashTable.Keys))
            {
                if(hashItem.Equals(partreference))
                {
    这个比较是没必要的,因为你有了哈希这段程序写的很糊涂