struct aa
{
public int key;
public int value;
}aa a1 = new aa();Hashtable ht = new Hashtable();
ht.Add(1, a1);
ht.Add(2, a1);
   。
   。
   。
我想遍历ht,把其中struct.key和struct.value相同的去掉。应该怎么做?

解决方案 »

  1.   

    struct aa
    {
    public int key;
    public int value;
    }aa a1 = new aa();Hashtable ht = new Hashtable();
    ht.Add(a1.key+a1.value, a1);
    ht.Add(a2.key+a2.value, a2);
    //如果一样不允许add的,不就可以了,这样也就不用移除了
      

  2.   

    struct aa:ICompare
    {
    public int key;
    public int value;
    public int Compare(
       object x,
       object y
    )
    {
       ....
    }
    }
      

  3.   

    晕 看不懂
    重写
    Equal 和 GetHashCode
      

  4.   

    Hashtable ht = new Hashtable();
                IDictionaryEnumerator enu=ht.GetEnumerator();
                while (enu.MoveNext())
                {
                    DictionaryEntry de = (DictionaryEntry)enu.Current;
                    //比较de.Value
                }
      

  5.   

    Hashtable遍历的时候不允许修改整个Hashtable中的内容,也就是说MoveNext或者foreach的时候不能删除项。两个方法:
    1. 重写Structure的Equal和GetHashCode,这样在调用Add的时候重复的项就无法添加。
    2. 如果不愿意重写,那只有首先遍历一次,用另外一个List之类的容器得到所有重复项,然后逐个删除。
      

  6.   

    那怎么遍历呢?
    比如我想取得所有aa.key
    谢谢