为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

jeck猫 2018-12-06 16:00:54
用代码说话吧.   [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;}      
查看完整描述

5 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-01-21
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

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

查看完整回答
反对 回复 2019-01-21
?
皈依舞

TA贡献1851条经验 获得超3个赞

可我不明白, 后台c#中是可以在foreach中删除Hashtable的
查看完整回答
反对 回复 2019-01-21
?
手掌心

TA贡献1942条经验 获得超3个赞

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

查看完整回答
反对 回复 2019-01-21
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

Hashtable不能直接for哦 ... 我采用路过秋天的办法,解决了.只是担心性能
查看完整回答
反对 回复 2019-01-21
  • 5 回答
  • 0 关注
  • 370 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信