猿问

为什么AjaxPro的AjaxMethod中不能使用foreach(){}遍历并移除Hasttabl

用代码说话吧.

 

[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;
}

 

 

 

jeck猫
浏览 398回答 5
5回答

慕的地10843

据我的不完全认知:foreach 一般只用在只读遍历,如果需要在遍历中做出修改删除操作,请使用for,在不能用for的情况下,可以先遍历时只记录索引,等foreach完之后再根据索引删除。

牧羊人nacy

楼上正解。怎么可以在foreach里去修改呢?

皈依舞

可我不明白, 后台c#中是可以在foreach中删除Hashtable的

手掌心

修改一般都是用for的哦,foreach一般都是只读的哦!!!

梵蒂冈之花

Hashtable不能直接for哦 ... 我采用路过秋天的办法,解决了.只是担心性能
随时随地看视频慕课网APP
我要回答