用代码说话吧.
[AjaxPro.AjaxMethod]
public int AskSubmit(int userID,int cityID,string contents)
{
m_Ask model = new m_Ask(); //实体
Hashtable ht = new Hashtable(); //假设 新建一个哈希表
ht.Add("ffffffffffffffffffff.[admin].f.sdgegew. adsdf. geg.s .sg",model);
ht.Add("fffffffff4r3tfffffffffff.[admin].f.sdgegew. adsdf. geg.s .sg", model);
ht.Add("ffffffffffffetgrffffffff.[adm32in].f.sdgegew. adsdf. geg.s .sg", model);
//胡乱添加一些内容
foreach (DictionaryEntry de in ht) //上面添加了3个哈希表值,这里遍历
{
if (de.Key.ToString().IndexOf(".[admin].") > 0) //查找包含关键字的哈希表键
{
lock (ht.SyncRoot)
{
ht.Remove(de.Key.ToString()); //找到就移除它.
}
}
}
int htCount = ht.Count; //页面调用ajaxpro的此方法后,程序走不到这里,除非上面遍历没找到,才能走到这里
//请问,为什么遍历到哈希键并移除后,程序就自动退出了? 无法继续执行下面的代码呢? 也没任何错误.
//下面还有很多代码省略...
return 1;
}
据我的不完全认知:foreach 一般只用在只读遍历,如果需要在遍历中做出修改删除操作,请使用for,在不能用for的情况下,可以先遍历时只记录索引,等foreach完之后再根据索引删除。
楼上正解。怎么可以在foreach里去修改呢?
修改一般都是用for的哦,foreach一般都是只读的哦!!!